【问题标题】:Run Junit test class inside one-jar with junit outside the jar在一个 jar 内运行 Junit 测试类,在 jar 外运行 junit
【发布时间】:2013-01-10 07:51:36
【问题描述】:

所以我使用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

没有运气 - 那么命令行是什么?还是我需要以某种方式修改单罐清单?

编辑:/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

【问题讨论】:

  • 好.. 但您可以编辑它以添加问题吗?
  • @AndrewThompson:ok 现在添加到正文中(我认为标题就足够了,抱歉)
  • 陈述“这是我想要实现的目标”或“..想要做”实际上不是一个问题。询问具体(您现在已经完成了)可以使帖子更适合问答网站,并有助于磨练答案。你现在问了一些问题,很好。请确保在以后添加问题(没有任何提示)。
  • 班上有没有测试方法?最好把代码贴出来。
  • 如果你使用-cp,你需要包含整个类路径。如果您没有运行 jar,则不要使用 -jar

标签: java command-line jar junit executable-jar


【解决方案1】:

使用以下命令行进行测试

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

编辑:

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

One-JAR 可让您将 Java 应用程序与其 将依赖 Jar 转换为单个可执行 Jar 文件。

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

【讨论】:

  • java -cp lib/junit.jar;sw.jar org.junit.runner.JUnitCore uoa.di.ys11.hw2.TestSmithWaterman 导致 JUnit version 4.10 Could not find class: uoa.di.ys11.hw2.TestSmithWaterman Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
  • sw.jar 应该在当前文件夹中,或者您应该指定 jar 的完整路径
  • 它在当前文件夹中(通过 lib/)
  • 是lib在当前文件夹中,sw.jar在lib中吗?如果是这样,那么使用 lib/sw.jar
  • SelfDescribeing 类在另一个 jar 中应该添加到类路径 (-cp)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2011-01-30
  • 2014-10-08
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多