gpt4 book ai didi

java - 保持测试从已知状态开始 - 多线程怎么样?

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:08 25 4
gpt4 key购买 nike

我试图通过在每次测试之前始终重置为已知状态来清理我的测试。在 JUnit 中,最好的方法似乎是使用 setup() 方法来设置某些字段的值。并行运行测试时,该字段始终是正确的,因为每个测试都是在测试的新实例中执行的。

但是在 TestNG 中情况似乎并非如此。根据post on their mailing list ,在多线程测试中设置 @BeforeMethod 中的字段并不能保证它们的值。

由于我需要我正在测试的类处于已知状态,是否有比使用 DataProvider 或说“不要在多线程模式下运行测试”更干净的解决方案?

最佳答案

在这一特定领域,TestNG 和 JUnit 之间只有一个区别:JUnit 将在每个测试方法之前创建一个全新的测试实例,而 TestNG 不会。

这意味着,使用 TestNG,测试方法存储在字段中的值将在调用之间保留,如果该对象很复杂并且需要时间来创建,这非常有用。它还有助于加快测试运行速度,因为您不必每次都从头开始重新创建此状态。

如果您希望每次都重置此状态,只需将初始化代码放入 @BeforeMethod 中,就像使用 JUnit 一样(除了它称为 @Before)。

至于多线程,我不明白为什么你说无法保证该值,你能更具体一点吗?

关于java - 保持测试从已知状态开始 - 多线程怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com