Junit学习小结

【流程设计】

1.  创建测试用例;

(1)       新建一个“Junit”目录(不同于“src”目录),但要求测试用例与要测试的类在相同的包中(原因在【小结】中会提到);

(2)       TestCase与被测试类要是一一对应的关系;测试方法与被测试方法要是一一对应的关系;

2.  书写测试方法;主要是写assert和fail方法;

(1)Junti测试其实采用的是断言的方式,只要我们在所有test开头中的方法对数据添加断言方法,同时提供很多断言的方法,
常用断言方法


assertEquals("失败提示信息","期望数据","测试数据")

断言获取数据是否与所期望的相等


assertNotNull("失败提示信息","测试数据")

断言获取数据不为null,否则提示错误


assertNull("失败提示信息","测试数据")

断言获取数据是为null,否则提示错误


assertTrue("失败提示信息",测试数据blooean值)

断言获取数据是否为ture,否则提示错误


fail("失败提示信息");

此方法一般放到异常处,遇到此方法,测试将停止!


assertSame("失败提示信息","期望数据","测试数据")

断言获取数据是否与所期望的相同





(2) “Fail”与“Exception”:

- fail,期望出现的错误。产生原因:assert函数出错(如assertFalse(true));fail函数产生(如fail(……))。

- exception,不期望出现的错误,属于unit test程序运行时抛出的异常。它和普通代码运行过程中抛出的runtime异常属于一种类型。



3.  编译测试用例;

4.  运行测试用例;

运行方式有二种:

(1)       单击右键“Run As/Junit Test”:执行单个TestCase中所有的测试方法,执行顺序是自上而下;

(2)       利用TestUnite来执行多个TestCase:

1)   创建类,必须继承TestUnite;

2)   在该类中必须实现下面方法:

public static Test suite() {

           TestSuite suite= new TestSuite();

            suite.addTestSuite(HelloWorldTest2.class);

            suite.addTestSuite(TestPeopleAction.class);

           return suite;

        }

      3) 右击“Run as ”;

【Junit用法小结】

1.    好的测试应该做到以下几点:

1) 测试的独立性:一次只测试一个对象,方便定位出错的位置。这有2层意思:一个TestCase,只测试一个对象;一个TestMethod,只测试这个对象中的一个方法。

2)   - 给测试方法一个合适的名字。

3)   - 在assert函数中给出失败的原因,如:assertTrue( “… should be true”, ……),方便查错。在这个例子中,如果无法通过assertTrue,那么给出的消息将被显示。在junit中每个assert函数都有第一个参数是出错时显示消息的函数原型。

4)   - 测试所有可能引起失败的地方,如:一个类中频繁改动的函数。对于那些仅仅只含有getter/setter的类,如果是由IDE(如Eclipse)产生的,则可不测;如果是人工写,那么最好测试一下。

5)   - 在setUp和tearDown中的代码不应该是与测试方法相关的,而应该是全局相关的。如针对与测试方法A和B,在setUp和tearDown中的代码应该是A和B都需要的代码。

6)   - 测试代码的组织:相同的包,不同的目录。这样,测试代码可以访问被测试类的protected变量/方法,方便测试代码的编写。放在不同的目录,则方便了测试代码的管理以及代码的打包和发布。如下:

Src//源代码根目录

--com

--mod1

--class1

Junit//测试代码根目录

--com

--mod1

--class1

2.    Junit进行单元测试的本质:

1)  执行setup()方法:初始化测试方法所需要的测试环境;所以一般将执行各个测试方法时所需的初始化工作放在其中,而不放在该测试类的构造方法中;

2)  执行测试方法:启动Junit test runner来运行各个测试方法;

3)  执行teardown()方法:在每个测试方法被调用之后被调用,负责撤销测试环境;

3.       Assert与Fail书写规则:

(1)        事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。所以上面的代码很冗余,完全可以写成下面等效却简洁得多的代码:

public void exampleTest () throws SomeApplicationException {

// do some test

}

(2)        Junit 有丰富而灵活的assert/fail 方法,如何用好这些方法也是大有讲究的。比如下面的写法就不大好:assert (creds == 3);不如写成assertEquals ("The number of credentials should be 3", 3, creds);第二种写法不仅易于阅读,而且在执行时如果fail 也可以向测试人员提供更多的信息。Junit 也有支持浮点数的assert方法,干净利索如下例assertEquals ("some message", result, expected, delta);

(3)        assertSame()用来测试两个引用是否指向同一个对象

assertEquals()用来测试两个对象是否相等

猜你喜欢

转载自xunbingjin.iteye.com/blog/616985