编写和运行JUnit测试
一、JUnit 4.0+应用中的特性
在编写测试用例的时候,JUnit 4.0+为开发人员提供了一些新特性,能够使编写测试用例更加简单和方便。
⒈注释(Annotation)
由于JUnit 4.0+是基于JDK 5.0平台,因此提供了注释功能,用于简化测试用例。下面的例子中,在测试方法testAdd()前面加上@Test标注,在执行JUnit测试的时候会自动执行这个方法。
⒉断言(Assert)
断言用于开发过程中的检查测试。
⒊预设环境(Fixture)
在执行测试的时候,JUnit会提供以下两类方法协助测试:
u 分别使用setUp()和tearDown()方法完成环境的初始化和清理工作,并且执行的顺序是:setUp()→测试方法→tearDown()。
u 分别使用setUpBeforeClass()和tearDownAfterClass()方法在每个测试用例中分配和释放只需一次的昂贵资源。
JUnit提供了@Before、@BeforeClass、@After和@AfterClass标注来完成这些工作。
⒋ 忽略测试
用@Ignore注解某个测试方法,使测试用例在运行时忽略该方法。
执行测试用例时,遇到@Ignore标注,便不再执行testAdd()方法。也可以把@Ignore 标注放到@Test的后面。
⒌@Test参数
@Test除了可以简单标示测试方法外,还有两个可选的
参数实现特殊功能,它们分别是expected和timeout。
expected参数
timeout参数
timeout参数用来指定被@Test注解的测试方法的最长运行时间。如果超过这个时间,则认为测试方法是失败的。
二、编写测试用例
按照TDD的开发原则:先给将要编写的代码写一段测试用例,然后再编写、修改代码,直到代码符合测试用例的要求。
例题:对“冒泡法排序”做测试,具体步骤如下:
Step1: 建立一个名为JUnitSample的项目,且“项目布局”选择第二项 。
选中JUnitSample项目,配置其“构建路径”中的“源代码”选项卡,使结果如下:
这样做的好处有两点:
u 测试类与被测试类单独存放,且具有相同的包名:同包的测试类可以被访问,同时方便定位被测试的类。
u 测试类和被测试类的字节码分开,便于以后对项目进行打包和发布。
Step2: 建立单元测试用例,并将JUnit jar包导入构建路径,结果如下:
Step3: 补充测试用例
Step4: 创建被测试类—Sort.java,并补充代码
三、运行测试用例
选择要运行的文件SortTest.java,右击鼠标,在上下文菜单中选择“运行方式”→“JUnit测试”,即可运行这个测试用例
运行测试时,如果选择的是项目、包或者测试文件,则项目、包或者测试文件中的所有测试用例都将被测试;如果只需要做单个测试,则只选择这个方法,再运行JUnit测试。
四、调试测试用例
当测试发生故障时,可以在Eclipse中利用调试手段定位错误,从而发现是测试用例的编写错误还是被测方法的错误,调试步骤和方法与应用程序的调试是一样。
例题:调试“冒泡法排序”测试用例:
Step 1: 为了看清测试用例和被测程序的执行过程,在两个文件中加入断点。
Step2: 调试运行测试用例,点击“继续”按钮或“单步跳过”按钮,观察程序的执行过程。
Step3: 执行“单步跳入”按钮,程序进入到getSort()方法里,再点击“继续”按钮,程序执行完排序,在返回语句停下来,观察排序结果。
点击“继续”按钮,程序执行并在tearDown()方法中停下来。继续运行后,程序顺利结束,测试通过。