@Test public void method() | 定义一个要测试的方法 |
@Before public void method() | 在每一个测试之前都会被执行的方法,这个方法常常用来进行一些测试环境的准备,比喻说读入输入数据,初始化类 |
@After public void method() |
与@Before进行对应,做一个清理工作 |
@BeforeClass public void method() | 在所有的测试开始之前执行,这个方法在类运行的时候运行,而且只会运行一次,所以常常用来做一些所有的方法都要依赖到工作,比喻说,数据库的链接。 |
@AfterClass public void method() |
与@BeforeClass进行对应,做一些类级别的清理工作 |
@Ignore | 表明方法是被忽略的,这个方法非常实用,比喻你的方法已经修改,但是对应的测试方法还没有得到一致的修改的时候,可以忽略掉这个测试方法先。 |
@Test(expected=IllegalArgumentException.class) | 检查测试方法是不是抛出了对应的异常 |
@Test(timeout=100) |
如果方法的执行操作所耗费的毫秒数>100MS,那么方法失败。 |
修改MathDemo类中div方法如下所示:
public int div(int a, int b) { if(b == 0) throw new ArithmeticException("除数不能为零"); return a / b; }
测试用例如下所示:
package com.reiyen.junit; import static org.junit.Assert.assertEquals; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class MathDemoTest2 { @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("set up......."); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("gone........"); } @Test public void testAdd() { assertEquals("1不等于2", 1 ,2); } @Test(expected=ArithmeticException.class) public void testDiv(){ assertEquals(1, new MathDemo().div(1,0)); } }
运行此测试用例,控制台打印信息如下:
set up.......
gone........
测试方法testAdd()未通过,打印如下信息:java.lang.AssertionError: 1不等于2 expected:<1> but was:<2>
测试方法testDiv()通过,因为当除数为0时,抛出了ArithmeticException;如果改为:
@Test(expected=ArithmeticException.class) public void testDiv(){ assertEquals(1, new MathDemo().div(1,1)); }
则未通过,打印出了如下异常:java.lang.AssertionError: Expected exception: java.lang.ArithmeticException
在 JUnit 4 中,您仍然可以在每个测试方法运行之前初始化字段和配置环境。然而,完成这些操作的方法不再需要叫做 setUp(),只要用 @Before 注释来指示即可,如下所示:
@Before protected void initialize() { System.setErr(new PrintStream(new ByteArrayOutputStream())); inputDir = new File("data"); inputDir = new File(inputDir, "xslt"); inputDir = new File(inputDir, "input"); }
甚至可以用 @Before 来注释多个方法,这些方法都在每个测试之前运行:
@Before protected void findTestDataDirectory() { inputDir = new File("data"); inputDir = new File(inputDir, "xslt"); inputDir = new File(inputDir, "input"); } @Before protected void redirectStderr() { System.setErr(new PrintStream(new ByteArrayOutputStream())); }
对于JUnit 3 中的tearDown() 方法,在JUnit 4,我可以给它取一个更自然的名称,并用 @After 注释它:
@After protected void disposeDocument() { doc = null; System.gc(); }
与 @Before 一样,也可以用 @After 来注释多个清除方法,这些方法都在每个测试之后运行。最后,您不再需要在超类中显式调用初始化和清除方法,只要它们不被覆盖即可,测试运行程序将根据需要自动为您调用这些方法。超类中的 @Before 方法在子类中的 @Before 方法之前被调用(这反映了构造函数调用的顺序)。@After 方法以反方向运行:子类中的方法在超类中的方法之前被调用。否则,多个 @Before 或 @After 方法的相对顺序就得不到保证。
时间测试
性能测试是单元测试中最头疼的问题,JUnit 4也未完全解决此问题, 你可以在JUNIT4的测试方法中添加一个时间参数。如果测试时间超过参数,则测试失败。如下,如果测试时间超过0.5秒,则此测试失败:
@Test(timeout=500) public void retrieveAllElementsInDocument() { doc.query("//*"); }
除基准性能测试外,时间测试在网络测试方面也很有用.如果一个远端的主机或数据当掉或太慢,你可以跳过此测试而不用阻塞在这里,好的测试集可以在作了一些改动后很快的一遍一遍的执行,可能一天数十次.设置一个超时让测试更快的执行,下面的示例中如果分析http://www.ibiblio.org/xml 的时间超过2秒,则测试失败.
@Test(timeout=2000) public void remoteBaseRelativeResolutionWithDirectory() throws IOException, ParsingException { builder.build("http://www.ibiblio.org/xml"); }
需要忽略的测试
@lgnore:该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。如下所示:
@Test @Ignore public void test1(){ ............. }
相关推荐
Android下使用JUnitTest用例,可以参见博客:http://www.cnblogs.com/plokmju/p/Android_JUnit.html
本资源适合具有一定junit test 的开发者,介绍了mockito最常用的用法
dom4j quick start, xpath 基本用法, junit Test
JUnitTest课件
NULL 博文链接:https://zhang-he.iteye.com/blog/1228237
JUnitTest3 and JUnitTest4
Junit Test 使用实例 XML的 SAX 解析 跟 PULL解析的实例
junit test
这个是最新的版本,更正了v1.01的一个bug。 JUnit Test Files Maker 是一款批量生成JUnit测试用例文件的软件. (注意:JDK 版本要求 5.0以上,当前版本不支持中文路径和带有空格的路径)
初次写testsuite会遇到“NO runnable methods”,添加@Test也没有解决问题,看了多个文档实例,终于解决了这个问题,愿意跟大家一起分享,添加了资源分2分,迫于我去下载资源跟我要分啊。java源代码。
MMVMArchitecture-Retrofit-Livedata-JunitTest MMVMArchitecture-Retrofit-Livedata-JunitTest 示例演示,使用星际大战API通过改造和实时数据实现MVVM体系结构的实现。还包括简单的测试用例,以检查API响应。 使用...
NULL 博文链接:https://heipark.iteye.com/blog/2056234
目前最新版本为v1.02 ,已经上传,请下载那个版本的文件(不需要资源分)。 下载地址:http://download.csdn.net/source/1698278
首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释...
spring-Test,Junit4 jar,和测试代码
NULL 博文链接:https://dannyhz.iteye.com/blog/2429129
Debug as android Junit Test 4.Logcat就能看到测试输出 AndroidManifest.xml导入(已做好) 1. <!-- Android JUnit配置 --> <uses-library android:name="android.test.runner" /> 2. targetPackage与上面...
Junit4 Test 单元测试 Junit4 Test 单元测试 Junit4 Test 单元测试
单元测试框架Junit—— JUnit3.8.1 以及使用JUnit测试的代码demo。
jUnitTest jUnit和伪造的mongo和gradle 构建此项目是为了创建演示以供将来的项目使用。 ----should have eclipse gradle pulgin---- import Gradle Project --> 'Build Model' --> select project --> ...