将位于同一类中的测试分组

Posted

技术标签:

【中文标题】将位于同一类中的测试分组【英文标题】:Grouping tests that are located in the same class 【发布时间】:2015-12-28 19:41:39 【问题描述】:

我正在准备面试,我的工作组织方式是每个问题都有自己的类别。这很方便,因为我可以将问题陈述、实现和测试集中到一个地方,以便将来重新审视问题。但是,我一直在尝试找到一种方法将测试用例分组到单个类中。如果我将测试和实现分成单独的类,我可以设置一个额外的测试套件类,如this。

就我而言,我有两种方法可以检查井字游戏是否完整。一种仅适用于 3 x 3 板,另一种适用于 N x 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。

【问题讨论】:

也许@Enclosed @RC。这正是我所想象的,而且效果很好,谢谢! 【参考方案1】:

您可以在代表组的函数中调用您的测试:

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


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

这样你将在一个更大的测试方法中执行其他方法。

别忘了在其他测试中删除@Test 注释。

【讨论】:

由于您的问题似乎已经解决,您可以通过按最有帮助的答案左侧的绿色图标将其标记为solved 我不是junit用户,但解决方案似乎是合理的,我会为你推销。

以上是关于将位于同一类中的测试分组的主要内容,如果未能解决你的问题,请参考以下文章

创建一个分组值的列

删除按钮位于 UITableView 样式分组单元格背景之外

OSPF详解-3 邻接度量值

在 C++ 中对大量元素进行分组的最快方法

C++ 类函数分组

将 2 个单选按钮分组到 Windows 应用程序的同一组中