在IntelliJ IDEA中使用DataProvider进行的TestNG测试失败

时间:2014-11-24 20:19:03

标签: java intellij-idea testng parameterized-unit-test

我最近开始玩tdd并遇到一个问题,我不明白为什么有一件事在起作用而另一件事没有。

以下代码适用于我:

public class Ant {

    public Ant(Point startLocation, Point hive) {
        this.currentLocation = new Point(startLocation);
        this.hive = new Point(hive);
    }

    public void goHome() {
        if (hive.x > currentLocation.x) {
            currentLocation.x++;
        } else if (hive.x < currentLocation.x){
            currentLocation.x--;
        }
        if (hive.y > currentLocation.y) {
            currentLocation.y++;
        } else if (hive.y < currentLocation.y){
            currentLocation.y--;
        }
    }
}

相应的测试:

@DataProvider(name = "goneHome")
public static Object[][] goHome() {
    return new Object[][] {
            {new Point(2,1), new Point(3,2), new Point(7,8)},
            {new Point(20,1), new Point(19,2), new Point(7,8)},
            {new Point(23,10), new Point(22,9), new Point(7,8)},
            {new Point(2,10), new Point(3,9), new Point(7,8)},
            {new Point(2,8), new Point(3,8), new Point(7,8)},
            {new Point(7,1), new Point(7,2), new Point(7,8)}
    };
}

@Test(dataProvider = "goneHome")
public void testGoHome(Point currentPosition, Point nextPosition, Point hive) 
    throws Exception {
    Ant ant = new Ant(currentPosition, hive);

    ant.move();
    assertEquals(ant.getCurrentLocation(), nextPosition);
}

如果我改变这样的ant构造函数,测试失败:

public Ant(Point startLocation, Point hive) {
    this.currentLocation = startLocation;
    this.hive = hive;
}

由于失败,我的意思是前两组DataProvider的测试工作正常,其余的是失败/未完成。 虽然我不太确定失败了。如果我删除DataProvider中的前两组数据,仍然只有前两个数据集(之前的第3和第4个数据集)不会失败。

我使用 IntelliJ 以及&#34;失败后的符号&#34;测试仍然是&#34;加载图标&#34;。

调试每个测试用例表明这些点设置正确。从测试中删除断言不会改变任何内容。

有人可以向我解释这种行为吗?

提前致谢

的Egon

编辑:更正了失败的构造函数的版本

1 个答案:

答案 0 :(得分:1)

也许它是IntelliJ IDEA中的一个错误。有时候我也面临着这个问题。不幸的是,它(2014-11-24)尚未解决:https://youtrack.jetbrains.com/issue/IDEA-100752

尝试使用备用跑步者运行测试(例如,作为Maven目标)。