내 작업은 간단합니다. Java 클래스를 JAR 파일 및 해당 JAR 외부 디렉토리의 종속성 (lib/
)으로 터미널에서 JUnit4 테스트를 실행하십시오. . Maven과 Maven 어셈블리 플러그인을 사용하고 있습니다.JUnit4 : lib 디렉토리가없는 JAR 파일 내부에서 테스트 케이스를 실행할 수 없습니다.
내가 예를 들어,이 example.Main
클래스에서 내 main()
방법에, JUnitCore 클래스와 테스트를 실행 :
JUnitCore.runClasses(example.mypackage.MyClass.class);
그때 나는이 오류가 발생, java -cp my-jar-file.jar example.Main -someArguments
로 JAR 파일을 실행할 때 문제가 :
Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore
at example.Main.main(Main.java:21)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
내 디렉토리 트리합니다 (JUnit을 의존성, junit-4.11.jar
는, JAR 파일 외부에 있습니다)된다
.
├── my-jar-file.jar
└── lib
├── commons-beanutils-1.8.0.jar
├── commons-codec-1.10.jar
├── commons-collections-3.2.1.jar
├── commons-io-2.4.jar
├── commons-lang-2.5.jar
├── commons-lang3-3.4.jar
├── commons-logging-1.1.1.jar
├── cssparser-0.9.16.jar
├── ezmorph-1.0.6.jar
├── hamcrest-core-1.3.jar
├── htmlunit-2.18.jar
├── htmlunit-core-js-2.17.jar
├── httpclient-4.5.jar
├── httpcore-4.4.1.jar
├── httpmime-4.5.jar
├── jcl-over-slf4j-1.6.6.jar
├── jetty-io-9.2.12.v20150709.jar
├── jetty-util-9.2.12.v20150709.jar
├── json-lib-2.4-jdk15.jar
├── junit-4.11.jar
├── jwebunit-core-3.3.jar
├── jwebunit-htmlunit-plugin-3.3.jar
├── log4j-1.2.17.jar
├── mysql-connector-java-5.1.6.jar
├── nekohtml-1.9.22.jar
├── regexp-1.3.jar
├── sac-1.3.jar
├── serializer-2.7.2.jar
├── servlet-api-2.5.jar
├── slf4j-api-1.7.5.jar
├── slf4j-log4j12-1.7.5.jar
├── websocket-api-9.2.12.v20150709.jar
├── websocket-client-9.2.12.v20150709.jar
├── websocket-common-9.2.12.v20150709.jar
├── xalan-2.7.2.jar
├── xercesImpl-2.11.0.jar
└── xml-apis-1.4.01.jar
이 문제가 JUnit4입니까? 아니면 뭔가 잘못하고있는거야?
감사합니다.
확실! 나는 지금 바보 같이 느껴지고있어 ... 고마워! – gorcajo