2013-07-30 63 views
0

我的公司希望脱离JUnit 3并开始只使用JUnit 4.另一位实习生和我已被赋予将旧版JUnit 3测试转换为使用JUnit 4约定的任务。但是,我正在转换我正在处理的测试文件。如何将这些JUnit 3测试转换为JUnit 4?

从我可以告诉,有一个generateTest方法返回一个SSlTest(SSlTest是TestCase的一个子类)。返回的SslTest覆盖runTest。 runTest包含一个启动两个线程的try-catch块,clientThread和serverThread(这两个线程都是在测试文件中定义的Thread的子类)。看起来实际的测试是在线程内部完成的,因为runTest的其余部分用于从两个线程捕获异常。

generateTest被另一个方法generateSuite调用(返回一个TestSuite)。 generateSuite包含一个外部for循环,它将套件添加到主套件。内部for循环使用generateTest将测试添加到主套件中的每个套件。主套件是该方法返回的内容。

最后,在测试文件的main方法中调用的suite()方法内部,设置while循环以使用generateSuite生成套件并将它们添加到更大的套件中。


我发现迁移到JUnit 4的唯一指南是简单得多的测试用例。我现在很迷茫,我公司没有人知道足够的JUnit 4来帮助我,所以任何提示都会非常感谢!

+1

你擅长叙述代码:) ..你可以发布代码本身吗? – Tala

+0

你说“generateTest ...返回一个SSITest” - 你的意思是它返回一个类的实例?还是它写了一个类的代码?我知道JUnit 3和4之间的主要区别在于3使用了“test ...”作为其测试方法的名称,而4使用了“@Test”注释。你没有提到你的3种方法的“测试...”方法;他们没有他们吗?他们不遵循惯例,还是我错过了什么? – arcy

+0

1.我不确定是否可以自己发布代码,因为它是公司代码,我不想陷入困境。 2.是的,它返回一个类的实例。有一个在clientThread中调用的“test ..”方法。 – gchan

回答

2

我要做的第一件事就是试着说服任何人给我的任务,这是不必要的。我知道作为一名实习生很难,但值得确保这个人明白这是没有必要的。

事实为令人信服:

  • JUnit的4罐子同时包含junit.framework和org.junit封装结构所以它是后向兼容的。
  • JUnit具有广泛的应用。他们的JUnit项目的所有者非常清楚这一点,不会要求人们重写所有的测试。换句话说,他们不会放弃兼容性。
  • 其实试试吧。认真。尝试像使用JUnit 4 jar一样运行现有的测试代码。你会看到如果你有任何编译错误。如果你这样做,那些是需要关注的领域。如果你不这样做,你就有很好的证据显示给你任务的人。

这并不意味着你不需要改变任何东西。这意味着您不必更改大部分代码。如果你有自定义的跑步者,你会想要使用JUnit 4风格。您还可能需要classpath suite来收集测试。

将部分测试转换为JUnit 4也有价值,因此团队中的开发人员可以使用一些示例。但是将它们全部转换并不能很好地利用时间。

在不能够张贴代码

获取互联网上的帮助是没有代码非常困难。我可以理解你的雇主不希望你发布代码。 (但是,他们可能不希望你发布类和方法的名字 - 你做的。)幸运的是,有一个选择。改为创建一个SSCCE。 (阅读链接 - 当你在工作中取得进步时,它会帮助你很多。)另外,较小的示例更易于阅读,它允许您更改类/方法/ etc名称,然后您的雇主将不会在线获得他们的代码。