@Test
public void testAscendingNumbers() {
Object[][] testData = new Object[][]{
{new int[]{1, 2, 3, 4, 5}, 4, 30},
{new int[]{1, 2, 2, 2, 2}, 4, 0},
{new int[]{1, 1, 1, 4, 3}, 5, 0},
{new int[]{1, 2, 4, 3, 1}, 4, 30},
{new int[]{2, 3, 4, 6, 1}, 5, 0},
{new int[]{1, 2, 6, 4, 5}, 4, 0},
{new int[]{5, 4, 3, 2, 1}, 4, 30},
{new int[]{6, 5, 3, 4, 2}, 5, 40},
{new int[]{2, 2, 3, 4, 4}, 4, 30},
{new int[]{2, 6, 3, 5, 3}, 4, 40}
};
KniffelTableModel instance = new KniffelTableModel();
for (Object[] obj : testData) {
System.out.println((int) obj[1]);
System.out.println("ascendingNumbers - " + obj[1] + " in " + Arrays.toString((int[]) obj[0]));
System.out.println("Expect: " + obj[2] + " --> got: " + instance.ascendingNumbers((int[]) obj[0], (int) obj[1]));
assertEquals((int) obj[2], instance.ascendingNumbers((int[]) obj[0], (int) obj[1]));
}
}
出于测试目的,我在这里没有使用过甲基化测试,但它仍然可以正常工作...问题是,我期望的结果与我正在测试的函数的结果相同,但它仍会说不一样... 我知道它必须是正确的,因为在“期望”行中,我得到2个相等的值...
答案 0 :(得分:0)
可能地, KniffelTableModel
实例是有状态的,而KniffelTableModel.ascendingNumbers()
对于后续使用相同参数的调用不会产生相同的结果。
否则它可能会修改输入数组。
您可以重写测试,以便每个用例仅调用一次KniffelTableModel.ascendingNumbers()
,即:
KniffelTableModel instance = new KniffelTableModel();
for (Object[] obj : testData) {
System.out.println((int) obj[1]);
System.out.println("ascendingNumbers - " + obj[1] + " in " + Arrays.toString((int[]) obj[0]));
final int result = instance.ascendingNumbers((int[]) obj[0], (int) obj[1]);
System.out.println("Expect: " + obj[2] + " --> got: " + result);
assertEquals((int) obj[2], result);
}
请检查KniffelTableModel
类中的状态变量,例如:
如果需要其他帮助,请发布KniffelTableModel
类的代码。