0

我的公司想离开 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 来帮助我,所以任何提示都将不胜感激!

4

1 回答 1

2

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

令人信服的事实:

  • JUnit 4 jar 包含 junit.framework 和 org.junit 包结构,因此它是向后兼容的。
  • JUnit 已被广泛采用。JUnit 项目的所有者很清楚这一点,不会要求人们重写所有测试。换句话说,他们不会只是放弃兼容性。
  • 其实试试看。严重地。尝试使用 JUnit 4 jar 运行现有的测试代码。您将查看是否收到任何编译器错误。如果你这样做了,这些就是要关注的领域。如果你不这样做,那么你有很多证据可以向给你任务的人展示。

这并不意味着您不必更改任何内容。这意味着您不必更改大部分代码。如果您有自定义运行器,您将希望使用 JUnit 4 样式。您可能还需要类路径套件来收集测试。

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

关于无法发布代码

如果没有代码,在互联网上获得帮助是非常困难的。我可以理解您的雇主不希望您发布代码。(但他们可能也不希望您发布类和方法名称 - 您确实这样做了。)幸运的是,还有另一种选择。而是创建一个SSCCE。(阅读链接 - 随着您的工作进展,它将对您有很大帮助。)除了更易于阅读的较小示例之外,它还允许您更改类/方法/等名称,然后您的雇主不会让他们的代码在线。

于 2013-08-03T20:55:40.540 回答