junit
테스트를 실행하는 동안 eclipse
다음 Exception
과 같이 표시됩니다 .
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
junit.jar
라이브러리 파일을 추가했습니다 .
나는 junit.jar를 다른 버전을 시도했다 : 4.4
, 4.8
, 등
이 예외를 어떻게 수정합니까?
답변
클래스 경로에 추가 hamcrest-all-X.X.jar
하십시오 .
2015 년 2 월 현재 최신 버전은 1.3입니다.
http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=
답변
의 JUnit GitHub의 팀 웹 사이트 (에 따르면 https://github.com/junit-team/junit/wiki/Download-and-Install ), junit.jar
및 hamcrest-core.jar
JUnit을 4.11를 사용하는 경우 모두 클래스 경로에 필요하다.
다음은 junit 및 hamcrest를 포함하는 Maven 종속성 블록입니다.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1.2</version>
<scope>test</scope>
</dependency>
<!-- Needed by junit -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
답변
따라야 할 몇 가지 단계 :
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
- 빌드 경로를 선택한 다음 메뉴에서 라이브러리 추가를 선택합니다.
- JUnit을 선택한 후 다음을 클릭하십시오.
- JUnit4를 선택한 다음 마침을 선택합니다.
답변
나를 위해 작동 : IntelliJ IDEA 13.1.1, JUnit4, Java 6
프로젝트 경로 [PROJECT_NAME] .iml에서 파일을 변경했습니다.
교체 됨 :
<library>
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
으로:
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
따라서 최종 .iml 파일은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
추신 : 파일을 저장하고 IntelliJ Idea가 다시로드하지 않도록하십시오. 딱 한번.
답변
junit.jar에는 이전 Hamcrest 클래스의 사본이 있으므로 junit-dep.jar이 필요합니다.
답변
이 문제는 classpath miss hamcrest-core-1.3.jar 때문입니다. 이 문제를 해결하려면 클래스 경로에 junit-4.XX.jar를 추가 할 때 hamcrest-core-1.3.jar를 추가하십시오.
처음에는이 문제도 발생하지만 공식 사이트를 참조하여 hamcrest-core-1.3.jar을 명령 줄을 사용하여 classpath에 추가하면 마침내 제대로 작동합니다.
javac -d ../../../../bin/ -cp ~/libs/junit-4.12.jar:/home/limxtop/projects/algorithms/bin MaxHeapTest.java
java -cp ../../../../bin/:/home/limxtop/libs/junit-4.12.jar:/home/limxtop/libs/hamcrest-core-1.3.jar org.junit.runner.JUnitCore com.limxtop.heap.MaxHeapTest
답변
일반적으로 이러한 라이브러리에는 hamcrest 클래스가 포함되어 있으므로 사용중인 hamcrest 버전과 충돌 할 수 있으므로 항상 hamcrest가 클래스 경로의 다른 테스트 라이브러리보다 먼저 있는지 확인하십시오. 이렇게하면 설명하는 유형의 대부분의 문제가 해결됩니다.