gpt4 book ai didi

java - 参数化运行器中的 Junit 测试用例构造函数调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:06 26 4
gpt4 key购买 nike

我写了一个很长的参数化测试,其中一个参数是一个构造函数调用,使用双括号语法为二维数组的每一行构造一个不同的对象:

Object[][] data = new Object[][] {
{ 1, 2, 3, new Blah() {{ setA(); }} }
{ 1, 2, 3, new Blah() {{ setB(); }} }
...

由于 JUnit 的理念是在每个 @Test 上调用测试用例构造函数,我假设它会对参数化测试做同样的事情 - 但我看到它只是调用那个构造函数(为参数化测试)每行一次,而不是每行每个测试一次。

因此,测试字段在全局范围内运行,并且测试相互影响。我想知道是否有办法强制运行器为每个测试调用构造函数,就像常规的 JUnit 运行器一样。在这种情况下,Google 和 JUnit 页面没有帮助我。我真的不想重写整个测试,它在这一点上是广泛且可读性很强的。

最佳答案

我不确定我是否完全理解您的意思,但是当测试运行时,会发生以下情况:

  1. 您用@Parameters 方法注释的方法只调用一次。
  2. 为带注释的方法返回的集合中的每一行创建一个测试运行器实例。
  3. 测试使用其构造函数为参数集合中的每一行实例化,但它是在从初始调用缓存的相应参数值行中传递的。

您可以通过单击 here 来查看发生这种情况的位置。和 here .如果您在调用之间改变状态(使用静态方法或其他方法),预计会看到奇怪的事情。

编辑:在浏览了代码之后,我更好地理解了您现在的要求。我刚刚使用 JUnit 4.10 调试了一个参数化测试,它确实在每个测试的每行中调用一次构造函数。

关于java - 参数化运行器中的 Junit 测试用例构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397176/

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