将位于同一 class 中的测试分组
Grouping tests that are located in the same class
我正在准备面试,组织工作的方式是每个问题都有自己的问题 class。这很方便,因为我可以将问题陈述、实施和测试集中到一个地方,以便将来重新审视问题。但是,我一直在尝试找到一种方法,将测试用例分组到单个 class 中。如果我将测试和实现拆分为单独的 classes,我可以设置一个额外的测试套件 class,例如 this。
就我而言,我有两种方法来检查井字棋盘是否完整。一种仅适用于 3 x 3 板,另一种适用于 N x N 板。我有一个测试它们的方法和很多 "basic" 测试:
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));
}
我希望两种不同类型的测试在 运行 时出现在两个不同的组中,而不是一个长列表,同时留在一个 class 文件中解决问题。请注意,我使用的是 Java 8 和 JUnit4。
您可以在代表组的函数中调用您的测试:
@Test
public void simpleTests() {
testSimpleRow();
testSimpleCol();
testBasicTie();
}
@Test
public void higgerTests() {
testHigherRow();
testHigherCol();
}
这样你就可以在一个更大的测试方法中执行彼此的方法。
不要忘记删除其他测试的 @Test
注释。
我正在准备面试,组织工作的方式是每个问题都有自己的问题 class。这很方便,因为我可以将问题陈述、实施和测试集中到一个地方,以便将来重新审视问题。但是,我一直在尝试找到一种方法,将测试用例分组到单个 class 中。如果我将测试和实现拆分为单独的 classes,我可以设置一个额外的测试套件 class,例如 this。
就我而言,我有两种方法来检查井字棋盘是否完整。一种仅适用于 3 x 3 板,另一种适用于 N x N 板。我有一个测试它们的方法和很多 "basic" 测试:
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));
}
我希望两种不同类型的测试在 运行 时出现在两个不同的组中,而不是一个长列表,同时留在一个 class 文件中解决问题。请注意,我使用的是 Java 8 和 JUnit4。
您可以在代表组的函数中调用您的测试:
@Test
public void simpleTests() {
testSimpleRow();
testSimpleCol();
testBasicTie();
}
@Test
public void higgerTests() {
testHigherRow();
testHigherCol();
}
这样你就可以在一个更大的测试方法中执行彼此的方法。
不要忘记删除其他测试的 @Test
注释。