将位于同一类中的测试分组
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用户,但解决方案似乎是合理的,我会为你推销。以上是关于将位于同一类中的测试分组的主要内容,如果未能解决你的问题,请参考以下文章