在一个罐子里面运行Junit测试类,在jar外部使用junit

Mr_*_*s_D 9 java junit command-line jar executable-jar

所以我已经使用one-jar在jar文件中打包了我的类和它们的依赖项(apache commons cli)(这很容易做到,请参阅命令行方法部分).现在我很好奇我是否可以使用类外的Junit jar在jar中运行java测试类.所以里面测试类的路径sw.jar是:

sw.jar\main\sw.jar\uoa\di\ys11\hw2\TestSmithWaterman.class
Run Code Online (Sandbox Code Playgroud)

(这main\是一个罐子的事情).我尝试过各种变化:

java -jar -cp lib/junit.jar org.junit.runner.JUnitCore  uoa.di.ys11.hw2.TestSmithWaterman
Run Code Online (Sandbox Code Playgroud)

没有运气 - 所以命令行会是什么?或者我是否需要以某种方式修改单罐清单?

编辑/boot-manifest.mf::

Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: uoa.di.ys11.hw2.Hw2
Run Code Online (Sandbox Code Playgroud)

/META-INF/MANIFEST.MF:

Manifest-Version: 1.0
Created-By: 1.7.0_09 (Oracle Corporation)
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: uoa.di.ys11.hw2.Hw2
Run Code Online (Sandbox Code Playgroud)

Rom*_*n C 3

使用以下命令行进行测试

java -cp lib/junit.jar;sw.jar org.junit.runner.JUnitCore  uoa.di.ys11.hw2.TestSmithWaterman
Run Code Online (Sandbox Code Playgroud)

编辑:

这应该适用于普通的 jar,但 jar 是由 one-jar 创建的

One-JAR 允许您将 Java 应用程序及其依赖项 Jas 打包到单个可执行 Jar 文件中。

之后,junit 就不可能加载此类类进行测试,正如我在我的案例中提到的 junit-4.4 一样。