【发布时间】:2013-07-30 14:49:14
【问题描述】:
我的公司想摆脱 JUnit 3 并开始只使用 JUnit 4。我和另一个实习生的任务是将旧的 JUnit 3 测试转换为使用 JUnit 4 约定。但是,我在转换我正在处理的测试文件时遇到问题。
据我所知,有一个 generateTest 方法返回一个 SSlTest(SSlTest 是 TestCase 的子类)。返回的 SslTest 会覆盖 runTest。 runTest 包含一个 try-catch 块,它启动两个线程,clientThread 和 serverThread(它们都是在 testfile 中定义的 Thread 的子类)。看起来实际测试是在线程内部完成的,因为 runTest 的其余部分用于捕获两个线程的异常。
generateTest 被另一个方法调用,generateSuite(返回一个TestSuite)。 generateSuite 包含一个外部 for 循环,用于将套件添加到主套件。内部 for 循环使用 generateTest 向主套件中的每个套件添加测试。主要套件是该方法返回的内容。
最后,在测试文件的 main 方法中调用的 suite() 方法中,设置了一个 while 循环以使用 generateSuite 生成套件并将它们添加到更大的套件中。
我发现的关于迁移到 JUnit 4 的唯一指南是针对更简单的测试用例。我现在很迷茫,我公司里没有其他人知道足够的 JUnit 4 来帮助我,所以任何提示都将不胜感激!
【问题讨论】:
-
你擅长叙述代码 :) .. 你能发布代码本身吗?
-
你说“generateTest ...返回一个SSITest”——你的意思是它返回一个类的实例吗?或者它是否为一个类编写代码?我所知道的 JUnit 3 和 4 之间的主要区别是 3 使用“test...”的约定作为其测试方法的名称,而 4 具有“@Test”注释。您没有为您的 3 种方法提及“测试...”方法;他们没有吗?他们不遵守约定,还是我遗漏了什么?
-
1.我不确定我是否可以发布代码本身,因为它是公司代码,我不想惹上麻烦。 2. 是的,它返回一个类的实例。在 clientThread 中调用了一个“test..”方法。
-
您是否尝试过使用 JUnit4 运行程序运行这些测试? JUnit4 相当向后兼容。
-
是的,它适用于 JUnit 4 运行器,但我的公司希望能够停止使用 JUnit 3 jar。测试文件有以下导入:junit.framework.Test; junit.framework.TestCase; junit.framework.TestSuite; junit.textui.TestRunner,但我认为一旦我们删除了 JUnit 3 jar,我就不能使用它们中的任何一个。
标签: java unit-testing junit junit4 junit3