如何处理具有依赖关系到不同版本的JUnit

时间:2017-04-07 23:06:21

标签: java junit

我不使用JUnit,但我有两个来自不同库的导入源代码,都使用JUnit;但是,它们似乎使用的是不同的版本。

例如,一个人导入junit.runner...之类的东西,另一个导入org.junit.runners...

我阅读了一些JUnit文档,看起来它们没有遵循严格的向后兼容性原则,不同版本显然具有不同的功能并且需要不同的代码,因此似乎没有简单的方法来“升级”我的一个图书馆到最新版本。

如何处理这种不兼容问题? (除了抛弃我倾向于做的所有测试之外)

3 个答案:

答案 0 :(得分:1)

Junit 3和junit 4使用单独的包层次结构,junit.framework为3,org.junit为4.使用这些不同版本的测试应该能够共存。如果基于代码使用相同模拟库的不同版本或像Hamcrest这样的帮助程序,则可能存在其他库的问题。我会非常犹豫要把这些结合起来。

将这两个代码体保存在不同的项目中,并让每个代码使用自己的junit版本运行自己的测试。然后你可以编写一个脚本,将两组类合并到一个jar中,使用uberjar或其他任何东西。查看您正在使用的任何构建工具的可用插件。

特别是如果您正在修改其他人的代码,丢弃测试似乎是鲁莽的。即使他们似乎没有提供太多价值,他们也总比没有好,你可以逐渐改善它们。

答案 1 :(得分:1)

单元测试的目的是帮助您找到并修复 投放中的错误。

所以问问自己:"你打算进行这些测试吗?然后修复第三方代码?"

最有可能的答案是" no"。 (它应该是#34;不是"在我眼里)。

因此:遵循你的直觉,去扔掉所有的测试

除此之外:那些是单元测试。假设由提供第三方代码的人员运行。在源代码上运行测试时,您期望得到什么?意思是:如果那些人在单位测试中断的情况下运送货物;那么你应该考虑不首先使用该产品。

继续这个想法:JUnit4已经出了很多年了。这意味着:你正在使用一种产品,人们可能会在很多年前停止对其单元测试设置进行更新 - 这是质疑"价值的另一个原因。那背后的图书馆!

答案 2 :(得分:0)

您不需要将JUnit 3(junit.runner)和JUnit 4(org.junit.runners)的不同jar放入类路径中。 JUnit4 jar也包含JUnit 3类。您可以使用它来运行JUnit 3 JUnit 4测试。