测试用例

JUnit 4

  • @Test(expected = Exception.class)表示预期会抛出Exception.class的异常
  • @Ignore含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore注解删去,就可以进行正常的测试。
  • @Test(timeout=100)表示预期方法执行不会超过100毫秒,控制死循环
  • @Before表示该方法在每一个测试方法之前运行,可以使用该方法进行初始化之类的操作
  • @After表示该方法在每一个测试方法之后运行,可以使用该方法进行释放资源,回收内存之类的操
  • @BeforeClass表示该方法只执行一次,并且在所有方法之前执行。一般可以使用该方法进行数据库连接操作,注意该注解运用在静态方法。
  • @AfterClass表示该方法只执行一次,并且在所有方法之后执行。一般可以使用该方法进行数据库连接关闭操作,注意该注解运用在静态方法。

TestSuite

如果你须有多个测试单元,可以合并成一个测试套件进行测试,况且在一个项目中,只写一个测试类是不可能的,我们会写出很多很多个测试类。可是这些测试类必须一个一个的执行,也是比较麻烦的事情。鉴于此,JUnit为我们提供了打包测试的功能,将所有需要运行的测试类集中起来,一次性的运行完毕,大大的方便了我们的测试工作。并且可以按照指定的顺序执行所有的测试类。下面的代码示例创建了一个测试套件来执行两个测试单元。如果你要添加其他的测试单元可以使用语句@Suite.SuiteClasses进行注解。

@RunWith(Suite.class)
@SuiteClasses({ JUnit1Test.class, StringUtilTest.class })
public class JSuit {}

TestSuite测试包类——多个测试的组合TestSuite类负责组装多个Test Cases。待测得类中可能包括了对被测类的多个测试,而TestSuit负责收集这些测试,使我们可以在一个测试中,完成全部的对被测类的多个测试。TestSuite类实现了Test接口,且可以包含其它的TestSuites。它可以处理加入Test时的所有抛出的异常。

TestResult结果类集合了任意测试累加结果,通过TestResult实例传递个每个测试的Run()方法。TestResult在执行TestCase是如果失败会异常抛出TestListener接口是个事件监听规约,可供TestRunner类使用。它通知listener的对象相关事件,方法包括测试开始startTest(Test test),测试结束endTest(Test test),错误,增加异常addError(Test test, Throwable t)和增加失败addFailure(Test test, AssertionFailedError t)TestFailure失败类是个“失败”状况的收集类,解释每次测试执行过程中出现的异常情况,其toString()方法返回“失败”状况的简要描述。

Assert

JUnit中的assert方法全部放在Assert类中,总结一下JUnit类中assert方法的分类:

  • assertTrue/False([String message,]boolean condition):判断一个条件是true还是false。感觉这个最好用了,不用记下来那么多的方法名。

  • fail([String message,]):失败,可以有消息,也可以没有消息。

  • assertEquals([String message,]Object expected,Object actual):判断是否相等,可以指定输出错误信息。第一个参数是期望值,第二个参数是实际的值。这个方法对各个变量有多种实现。在JDK1.5中基本一样。但是需要主意的是floatdouble最后面多一个delta的值。

  • assertNotNull/Null([String message,]Object obj):判读一个对象是否非空(非空)

  • assertSame/NotSame([String message,]Object expected,Object actual):通过内存地址,判断两个对象是否指向同一个对象。

  • failNotSame/failNotEquals(String message, Object expected, Object actual):当不指向同一个内存地址或者不相等的时候,输出错误信息。注意信息是必须的,而且这个输出是格式化过的。

下一页