java - 在一个 jar 里运行 Junit 测试类,在 jar 外运行 junit

标签 java command-line jar junit executable-jar

所以我使用 one-jar 将我的类及其依赖项(apache commons cli)打包到一个 jar 文件中(这很容易做到,参见 Command-Line Approach 部分)。现在我很好奇我是否可以在类外使用 Junit jar 在 jar 内运行 java 测试类。所以 sw.jar 中测试类的路径是:

sw.jar\main\sw.jar\uoa\di\ys11\hw2\TestSmithWaterman.class

(main\ 是一个单一的东西)。我尝试过以下变体:

java -jar -cp lib/junit.jar org.junit.runner.JUnitCore  uoa.di.ys11.hw2.TestSmithWaterman

没有运气 - 那么命令行是什么?或者我是否需要以某种方式修改单 jar list ?

编辑:/boot-manifest.mf:

Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: uoa.di.ys11.hw2.Hw2

/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

最佳答案

使用如下命令行进行测试

java -cp lib/junit.jar;sw.jar org.junit.runner.JUnitCore  uoa.di.ys11.hw2.TestSmithWaterman

编辑:

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

One-JAR lets you package a Java application together with its dependency Jars into a single executable Jar file.

在那之后,junit 就不可能了,因为我在我的例子中提到了 junit-4.4 来加载这些类进行测试。

关于java - 在一个 jar 里运行 Junit 测试类,在 jar 外运行 junit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537233/

相关文章:

java - 将@Column 放在字段上,同时将@Transient 放在getter 和setter 上

java - byte[] 作为 Rest Web 服务的输入

windows - 如何获取与进程关联的 GDI 对象

Java、Classpath、Classloading => 同一个 jar/项目的多个版本

java - PHP exec() 在执行 java -jar 命令时返回空数组(无输出)

java - 在类路径资源中指定文件

java - 编程中实例的含义是什么?

java - Java中密封类和最终类的区别

c# - 使用具有自定义 Main() 签名的 System.CommandLine

javascript - NodeJS REPL 变量赋值——需要帮助找出问题所在