相信大家都知道setUp(@Before)会在任何测试方法之前执行,tearDown(@After)会在测试方法之后执行。
我们还知道 Junit 将为 每个测试方法 创建一个 Test 实例。
我的问题是我们可以将 setUp 方法内容移动到类 Constructor 并删除 setUp 方法吗?是否有任何特定原因保留 setUp 方法?
原文由 mhshams 发布,翻译遵循 CC BY-SA 4.0 许可协议
相信大家都知道setUp(@Before)会在任何测试方法之前执行,tearDown(@After)会在测试方法之后执行。
我们还知道 Junit 将为 每个测试方法 创建一个 Test 实例。
我的问题是我们可以将 setUp 方法内容移动到类 Constructor 并删除 setUp 方法吗?是否有任何特定原因保留 setUp 方法?
原文由 mhshams 发布,翻译遵循 CC BY-SA 4.0 许可协议
在工作中,我们发现了一些非常有趣的东西,可以回答您的问题。当您运行测试套件时,尤其是大量测试(200 多个)时,JUnit 开始使用大量内存。这是因为所有测试都是在运行任何实际测试方法之前实例化的。
因此,我们遇到了“内存泄漏”。因为我们使用 Spring 为我们的数据库测试连接了一些 JPA EntityManager 对象,这变成了很多对象和大量内存,并且在测试进行到大约一半的时候我们遇到了 OutOfMemory 异常。
恕我直言,最佳做法是使用 setUp 和 tearDown 来注入您的依赖项并清空任何和所有类引用。这将使您的测试运行得更快,并为您省去很多麻烦!
希望你从我们的错误中吸取教训:)
原文由 BjornS 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.8k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
4 回答2.4k 阅读
2 回答847 阅读✓ 已解决
2 回答1.4k 阅读
这篇(旧的) JUnit 最佳实践 文章是这样说的: