JUnit中的assertEquals(Object [],Object [])?

时间:2015-11-15 01:32:03

标签: java junit

所以我正在进行JUnit 4.0测试并测试对象(Stick)数组,如果它们相同,那就是它们,但是我得到了失败测试。

坚持课:

 public class Stick {
        private char stick;

        public Stick() {
            stick = 'I';
    }

Game类 - 我初始化Stick数组:

public class Game {
private Stick[] sticks;

public Stick[] StartNewGame() {
    counter = 1;
    sticks = new Stick[22];

    for(int i = 0; i<sticks.length; i++) {
        Stick a_stick = new Stick();
        sticks[i] = a_stick;
    }
    return sticks;
}

测试代码:

@Test
    public void ShouldStartAGame() {
        Stick[] sticks = new Stick[22];
        for(int i = 0; i<sticks.length; i++) {
            Stick a_stick = new Stick();
            sticks[i] = a_stick;
        }
        assertArrayEquals(sticks, game.StartNewGame());

    }

1 个答案:

答案 0 :(得分:1)

我认为,这是由于Stick上缺少一个equals方法,所以equals正在比较Stick[]元素的内存地址,并发现它们是不同的。

覆盖Stick中的默认equals(和hashcode)方法。

此外,测试违反了DRY原则,因为您在测试中重复执行代码,如果您使用剪切和粘贴将实现中的错误复制到测试中,则世界上没有单元测试会发现错误。