【发布时间】: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