这是完全可能的,只要你运行测试的机器有java。以正常方式构建测试,并创建包含所有依赖包的可执行jar。然后你可以在另一台机器上部署该jar并从那里运行它。
如果您使用的是maven,那么shade会为您构建包含所有依赖关系的jar文件。你也可以使用assembly,尽管它有点困难。
解决方案中不太明显的部分是使用JUnit runner主类作为您的可执行文件的主类,您可以根据Oracle's tutorial进行设置。既然你已经在你的jar中拥有了所有的依赖关系,你不必担心类路径。所有您需要知道的是要运行的类是org.junit.runner.JUnitCore
(see this answer),并且它需要您要运行的带注释测试类的名称。完成所有操作后,只需运行java -jar YourJarFileOfTests.jar yourorg.yourpackage.YourJunitTestClass
即可。
如果您想更进一步,并将测试类名称传入java -jar
,那么您可以使用create a simple suite来提取所有测试类以方便使用。您甚至可以创建您自己的主类,并使用您的硬编码includes-all-tests套件代表JUnitCore
。一旦你完成了,你可以简单地运行java -jar YourJarFileOfTests.jar
,它会以你的套件类作为参数调用JUnitCore,而罗伯特是你母亲的兄弟。
这听起来就像我想要做的,但我有点不清楚如何做到这一点。我很容易地添加了maven的阴影插件,但我不知道如何使用它。 至于你给出的关于从命令行运行测试的第一个答案,我也有点不确定如何使用它 - 我是否需要编辑我的代码?我在哪里把我的jar的路径(使用Junit 4.0)。 非常感谢您的帮助 – user2180076
扩展了这个答案。 SO上有很多可执行文件的问题和答案;如果我的回答不够清楚,请发表评论,并附上指向您发现更有用的答案的链接,然后我会更新我的答案并提供参考。 –
我提供给Shade的链接包括一个[关于如何在你的pom中激活它的例子](http://maven.apache.org/plugins/maven-shade-plugin/usage.html)。你不需要做其他事情; Shade的默认操作是始终遮蔽你的jar。看看你的阴影之后你的罐子有多大;这是数百Ks更大,我敢打赌。 –