对位于同一类中的测试进行分组

时间:2015-12-28 19:41:39

标签: java unit-testing junit4

我正在进行面试准备工作,组织我的工作的方式是每个问题都有自己的课程。这很方便,因为我可以将问题陈述,实现和测试分组到一个地方,以便在将来轻松查看问题。但是,我一直试图找到一种方法将测试用例组合在一起。如果我将测试和实现分成不同的类,我可以设置一个额外的测试套装类,如enter image description here

在我的情况下,我有两种方法来检查tic tac toe board是否完整。一个是仅3个3个板,另一个是N个N板的通用。我有一种测试它们的方法和许多“基本”测试:

    public void doTestBasic(char expected, char[][] board){
        assertThat("Only 3 by 3", expected, is(checkForWinner3By3(board)));
        assertThat("Generic", expected, is(checkForWinnerGeneric(board)));
    }

    @Test
    public void testSimpleRow(){
        char[][] board = {
                {'X','X', 'X'},
                {' ',' ', ' '},
                {' ',' ', ' '}};
        char expected = 'X';
        doTestBasic(expected, board);
    }

    @Test
    public void testSimpleCol(){
        char[][] board = {
                {'X',' ', ' '},
                {'X',' ', ' '},
                {'X',' ', ' '}};
        char expected = 'X';
        doTestBasic(expected, board);
    }

    @Test
    public void testBasicTie(){
        char[][] board = {
                {'X','O', 'O'},
                {'O','X', 'X'},
                {'O','X', 'O'}};
        char expected = 'N';
        doTestBasic(expected, board);
    }

然后我对更大的电路板进行了更多测试,例如:

    @Test
    public void testHigherEmpty(){
        char[][] board = {
                {' ',' ', ' ', ' '},
                {' ',' ', ' ', ' '},
                {' ',' ', ' ', ' '},
                {' ',' ', ' ', ' '}};

        char expected = 'N';
        assertEquals(expected, checkForWinnerGeneric(board));

    }


    @Test
    public void testHigherRow(){
        char[][] board = {
                {'X','X', 'X', 'X'},
                {' ',' ', ' ', ' '},
                {' ',' ', ' ', ' '},
                {' ',' ', ' ', ' '}};

        char expected = 'X';
        assertEquals(expected, checkForWinnerGeneric(board));

    }

我希望两种不同类型的测试在运行时显示在两个不同的组中而不是一个长列表中,同时保留在一个类文件中以解决问题。请注意,我使用的是Java 8和JUnit4。

1 个答案:

答案 0 :(得分:1)

您可以在代表群组的功能中调用您的测试:

@Test
public void simpleTests() {
    testSimpleRow();
    testSimpleCol();
    testBasicTie();
}

@Test
public void higgerTests() {
    testHigherRow();
    testHigherCol();
}

这样你就可以用更大的测试方法执行彼此的方法。

请勿忘记删除其他测试中的@Test注释。