您能否简单解释 @TestInstance
注释及其在 JUnit 5 中的用途?
我认为我们可以通过 制作我们的字段 static
来达到同样的效果。
原文由 Mahozad 发布,翻译遵循 CC BY-SA 4.0 许可协议
引入此注释是为了减少运行单元测试时创建的对象数量。
添加 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
到您的测试类将避免为类中的每个测试创建类的新实例。当您在同一个测试类中有很多测试并且此类的实例化很昂贵时,这特别有用。
应谨慎使用此注释。所有单元测试都应该相互隔离和独立。如果其中一个测试更改了测试类的状态,那么您不应该使用此功能。
使您的字段静态以达到相同的效果并不是一个好主意。它确实会减少创建的对象数量,但是当测试类中的所有测试都执行完时,它们无法被清理。当你有一个巨大的测试套件时,这可能会导致问题。
原文由 dyVeloper 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
我认为 文档 提供了有用的摘要:
但是您可能已经读过,并且认为将字段设置为静态与将字段声明为实例变量并使用
@TestInstance(Lifecycle.PER_CLASS)
具有相同的效果是正确的。因此,也许“它在 JUnit 5 中有何用处”这个问题的答案是使用
@TestInstance
…@TestInstance
的使用不太可能是偶然的,或者是无意复制粘贴的结果。