使用jUnit进行测试

时间:2011-11-30 13:12:26

标签: java junit

我有一个名为Menu.java的类,它被用作我程序的接口。

在这个Menu.java类中,我有一个开关/案例块作为我的菜单选项。

基本上,我想使用jUnit来测试该switch / case块中每个case的输出,但是我很难找到最好的方法。

最好为每个菜单操作分配一个单独的jUnit TestCase吗?然后使用单个TestUnit来运行所有案例?或者有更好的方法可以做到吗?

非常感谢。

5 个答案:

答案 0 :(得分:3)

通常,每个类都有一个相应的测试类。所以你会有一个MenuTest.java来匹配你的Menu.java。这使您可以快速找到与特定文件关联的测试,因为命名约定。

然后,理想情况下,每个测试都有一个与之相关的测试方法。因此,如果你的交换机有10个案例,你最终会得到10个测试方法,每个案例一个。这使您可以快速隔离失败的选项,因为您可以单独获得每个测试的反馈。

请注意,TestCase是JUnit 3.如果可能,请使用JUnit 4测试(org.junit。*),这些测试使用@Test注释进行注释。

答案 1 :(得分:1)

我会为每个可能的工作流使用单个测试用例。理想情况下,每个测试用例都会有一个断言,遵循该指南可能更容易。一般来说,您希望保持单元测试的简洁。

然后我会将所有测试用例放在同一个测试类中,只要它们属于同一个测试类。

答案 2 :(得分:1)

我为Menu.java(MenuTest.java)创建了一个类。我会为每个菜单选项编写一个测试用例。如果您有GUI内容,请将其与逻辑分开。

无需测试GUI或其管道。

答案 3 :(得分:0)

如果您正在测试的方法是为此交换机接收不同的参数,请考虑使用参数化测试用例。优点是,如果您的交换机发生变化,更容易跟踪需要更改的内容:

以下是TestNG的工作原理(查看JUnit的“参数化测试用例”)

// This method will provide data to any test method that declares that
// its Data Provider is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
 return new Object[][] {
   { "Foo", new Integer(36) },
   { "Bar", new Integer(37)},
 };
}

// This test method declares that its data should be supplied by the
// Data Provider named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
 System.out.println(n1 + " " + n2);
}

答案 4 :(得分:-2)

在您的情况下,我会为所有选项使用单个测试用例。你需要这样的东西:

import org.junit.Test;
import org.junit.Assert;
import your.project.Menu;

public class MenuTest {
@Test
public void testCase() {
Menu menu = new Menu();
assertEquals("1",menu.runCase("bar"));
assertEquals("2",menu.runCase("foo"));
//etc
}
}