【问题标题】:TestNG parametrized tests - unexpected dependency between testsTestNG 参数化测试 - 测试之间的预期依赖关系
【发布时间】:2015-12-13 12:16:44
【问题描述】:

我最近开始学习 Java(我是 .net 人),但我对以下单元测试有疑问:

@Test(dataProvider = "rotatedArray")
public void given_array_of_items_rotates_array(Integer[] originalArray, int rotationCount, Integer[] expectedArray) {
    originalArray = originalArray.clone();

    Utils.rotate(originalArray, rotationCount);

    Assert.assertArrayEquals(expectedArray, originalArray);
}

@DataProvider(name = "rotatedArray")
public static Object[][] rotatedArrayProvider() {
    return new Object[][] {
            // array that is not rotated
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    0,
                    new Integer[] { 1, 2, 3, 4, 5, 6 }
            },

            // array rotated one place forward
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    1,
                    new Integer[] { 6, 1, 2, 3, 4, 5 }
            },

            // array rotated one place backward
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    -1,
                    new Integer[] { 2, 3, 4, 5, 6, 1 }
            },

            // array rotated by array.length
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    6,
                    new Integer[] { 1, 2, 3, 4, 5, 6 }
            },

            // array rotated by array.length - 1
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    5,
                    new Integer[] { 2, 3, 4, 5, 6, 1 }
            },

            // array rotated by some number of places backwards
            {
                    new Integer[] { 1, 2, 3, 4, 5, 6 },
                    -3,
                    new Integer[] { 4, 5, 6, 1, 2, 3 }
            },
    };
}

Utils.rotate 是一个简单的函数,它将作为参数传递的数组旋转给定数量的位置。当我在带有注释行的 IntelliJ 中运行此代码时:

// originalArray = originalArray.clone();

两个given_array_of_items_rotates_array 测试用例失败,没有任何有意义的消息。当我取消注释克隆数组的行或减少数据提供程序中的测试用例数量时,问题就会消失。这个测试只是一个使用rotatedArray 提供者的测试。看起来问题在于修改输入参数 - 我搜索了 TestNG 文档,但找不到任何线索。

编辑: 将测试方法更改为:

@Test(dataProvider = "rotatedArray")
public void given_array_of_items_rotates_array(Integer[] originalArray, int rotationCount, Integer[] expectedArray) {
    for (int i = 0; i < originalArray.length; i++)
            originalArray[i] = 123;
}

有些测试仍然没有通过。控制台中没有输出。 看起来是修改参数而不是断言的问题。

智能:

【问题讨论】:

  • 是否为失败的测试或其他原因引发了 AssertionError?请提供控制台输出。

标签: java intellij-idea testng


【解决方案1】:

目前 TestNG (6.9.9) 可能在数组断言方面存在一些问题。它应该在下一个版本中修复。 见https://github.com/cbeust/testng/pull/870

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2019-05-14
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多