Suche senden
Hochladen
Junit使用指南及作业规范
•
7 gefällt mir
•
844 views
D
dong jiang
Folgen
discribe the junit 。
Weniger lesen
Mehr lesen
Technologie
Bildung
Melden
Teilen
Melden
Teilen
1 von 23
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Java单元测试
Java单元测试
darlingshan
Java23种设计模式(总结)
Java23种设计模式(总结)
xuanlong282
Unit test lesson 2
Unit test lesson 2
Medivh2011
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?
wensheng wei
PHPUnit slide formal
PHPUnit slide formal
jameslabs
Java多线程编程详解
Java多线程编程详解
yiditushe
Ganglia轻度使用指南
Ganglia轻度使用指南
Schubert Zhang
Empfohlen
Java单元测试
Java单元测试
darlingshan
Java23种设计模式(总结)
Java23种设计模式(总结)
xuanlong282
Unit test lesson 2
Unit test lesson 2
Medivh2011
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?
wensheng wei
PHPUnit slide formal
PHPUnit slide formal
jameslabs
Java多线程编程详解
Java多线程编程详解
yiditushe
Ganglia轻度使用指南
Ganglia轻度使用指南
Schubert Zhang
Mengenal Manhaj Salaf
Mengenal Manhaj Salaf
yanto abdulah
Безраздельная преданность
Безраздельная преданность
Алексей Белецкий
Cables atlas bekker
Cables atlas bekker
Алексей Белецкий
Kisi uas ipa ix, tp 2015 2016
Kisi uas ipa ix, tp 2015 2016
yanto abdulah
Новая презентация БРЕМАНИ - "Советы на лето"
Новая презентация БРЕМАНИ - "Советы на лето"
Алексей Белецкий
Yrke2025 april 2011
Yrke2025 april 2011
Heidi Backman
Коллекция NSP "Коралловый Риф"
Коллекция NSP "Коралловый Риф"
Алексей Белецкий
Framtiden och det livslånga lärandet prakticum 20 10 2010
Framtiden och det livslånga lärandet prakticum 20 10 2010
Heidi Backman
Pembahasan ringkas tentang zina
Pembahasan ringkas tentang zina
yanto abdulah
Gaya dan penerapannya
Gaya dan penerapannya
yanto abdulah
Kisi kisi ipa vii, tp 2015-2016, k 2013
Kisi kisi ipa vii, tp 2015-2016, k 2013
yanto abdulah
Rpp gaya
Rpp gaya
yanto abdulah
Table Top Box Gardens
Table Top Box Gardens
jmehau
Каталог продукции Natria New
Каталог продукции Natria New
Алексей Белецкий
Trailoftears
Trailoftears
Zach Pechette
Reading for High-Ability Students
Reading for High-Ability Students
annieorsini
Industry profile
Industry profile
Saket Chugh
Foundation of software development 1
Foundation of software development 1
netdbncku
Java script测试之js unit ut
Java script测试之js unit ut
fangdeng
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
AgileCommunity
Skan it 6.0 user manual chinese
Skan it 6.0 user manual chinese
Lenin TaMe
LABVIEW的自动化测试之路
LABVIEW的自动化测试之路
Dean Lee
Weitere ähnliche Inhalte
Andere mochten auch
Mengenal Manhaj Salaf
Mengenal Manhaj Salaf
yanto abdulah
Безраздельная преданность
Безраздельная преданность
Алексей Белецкий
Cables atlas bekker
Cables atlas bekker
Алексей Белецкий
Kisi uas ipa ix, tp 2015 2016
Kisi uas ipa ix, tp 2015 2016
yanto abdulah
Новая презентация БРЕМАНИ - "Советы на лето"
Новая презентация БРЕМАНИ - "Советы на лето"
Алексей Белецкий
Yrke2025 april 2011
Yrke2025 april 2011
Heidi Backman
Коллекция NSP "Коралловый Риф"
Коллекция NSP "Коралловый Риф"
Алексей Белецкий
Framtiden och det livslånga lärandet prakticum 20 10 2010
Framtiden och det livslånga lärandet prakticum 20 10 2010
Heidi Backman
Pembahasan ringkas tentang zina
Pembahasan ringkas tentang zina
yanto abdulah
Gaya dan penerapannya
Gaya dan penerapannya
yanto abdulah
Kisi kisi ipa vii, tp 2015-2016, k 2013
Kisi kisi ipa vii, tp 2015-2016, k 2013
yanto abdulah
Rpp gaya
Rpp gaya
yanto abdulah
Table Top Box Gardens
Table Top Box Gardens
jmehau
Каталог продукции Natria New
Каталог продукции Natria New
Алексей Белецкий
Trailoftears
Trailoftears
Zach Pechette
Reading for High-Ability Students
Reading for High-Ability Students
annieorsini
Industry profile
Industry profile
Saket Chugh
Andere mochten auch
(17)
Mengenal Manhaj Salaf
Mengenal Manhaj Salaf
Безраздельная преданность
Безраздельная преданность
Cables atlas bekker
Cables atlas bekker
Kisi uas ipa ix, tp 2015 2016
Kisi uas ipa ix, tp 2015 2016
Новая презентация БРЕМАНИ - "Советы на лето"
Новая презентация БРЕМАНИ - "Советы на лето"
Yrke2025 april 2011
Yrke2025 april 2011
Коллекция NSP "Коралловый Риф"
Коллекция NSP "Коралловый Риф"
Framtiden och det livslånga lärandet prakticum 20 10 2010
Framtiden och det livslånga lärandet prakticum 20 10 2010
Pembahasan ringkas tentang zina
Pembahasan ringkas tentang zina
Gaya dan penerapannya
Gaya dan penerapannya
Kisi kisi ipa vii, tp 2015-2016, k 2013
Kisi kisi ipa vii, tp 2015-2016, k 2013
Rpp gaya
Rpp gaya
Table Top Box Gardens
Table Top Box Gardens
Каталог продукции Natria New
Каталог продукции Natria New
Trailoftears
Trailoftears
Reading for High-Ability Students
Reading for High-Ability Students
Industry profile
Industry profile
Ähnlich wie Junit使用指南及作业规范
Foundation of software development 1
Foundation of software development 1
netdbncku
Java script测试之js unit ut
Java script测试之js unit ut
fangdeng
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
AgileCommunity
Skan it 6.0 user manual chinese
Skan it 6.0 user manual chinese
Lenin TaMe
LABVIEW的自动化测试之路
LABVIEW的自动化测试之路
Dean Lee
Unit test
Unit test
shan chen
同济优秀课程设计 - 软件测试报告
同济优秀课程设计 - 软件测试报告
Kerry Zhu
Introduction to software quality assurance and its implementation
Introduction to software quality assurance and its implementation
Yung-Chun Chang
Testing in python 2.7.3
Testing in python 2.7.3
Wen Liao
Phpunit入门 r2
Phpunit入门 r2
Baohua Cai
GTest交流与经验总结
GTest交流与经验总结
coderzh
+++º+ ¦¦ ¦ ¦¦ ¦+ =
+++º+ ¦¦ ¦ ¦¦ ¦+ =
guesta6295f3
Foundation of software development 2
Foundation of software development 2
netdbncku
OpenSTACK Installation on Ubuntu
OpenSTACK Installation on Ubuntu
康志強 大人
测试用例浅析 V1.1
测试用例浅析 V1.1
shijian_dev
PHPUnit
PHPUnit
jameslabs
manual
manual
angelsainy
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
Max Lai
自动化运维管理
自动化运维管理
frankwsj
软件工程 第八章
软件工程 第八章
浒 刘
Ähnlich wie Junit使用指南及作业规范
(20)
Foundation of software development 1
Foundation of software development 1
Java script测试之js unit ut
Java script测试之js unit ut
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
Skan it 6.0 user manual chinese
Skan it 6.0 user manual chinese
LABVIEW的自动化测试之路
LABVIEW的自动化测试之路
Unit test
Unit test
同济优秀课程设计 - 软件测试报告
同济优秀课程设计 - 软件测试报告
Introduction to software quality assurance and its implementation
Introduction to software quality assurance and its implementation
Testing in python 2.7.3
Testing in python 2.7.3
Phpunit入门 r2
Phpunit入门 r2
GTest交流与经验总结
GTest交流与经验总结
+++º+ ¦¦ ¦ ¦¦ ¦+ =
+++º+ ¦¦ ¦ ¦¦ ¦+ =
Foundation of software development 2
Foundation of software development 2
OpenSTACK Installation on Ubuntu
OpenSTACK Installation on Ubuntu
测试用例浅析 V1.1
测试用例浅析 V1.1
PHPUnit
PHPUnit
manual
manual
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
自动化运维管理
自动化运维管理
软件工程 第八章
软件工程 第八章
Junit使用指南及作业规范
1.
使用指南及作业规范 V1.0 Keep the
bar green keep the code clean! 作者:shaomeng95 BLOG:http://shaomeng95.javaeye.com/
2.
Junit 使用指南及作业规范
目录 1. JUNIT 总览 ................................................................................................................................... 3 1.1 简介 ....................................................................................................................................... 3 1.2 特性 ....................................................................................................................................... 3 1.3 适用对象 ............................................................................................................................... 3 2 JUNIT 使用 ................................................................................................................................... 3 2.1 JUNIT 3.X 使用 ......................................................................................................................... 3 2.1.1 下载与安装 ...................................................................................................................... 3 2.1.2 使用方法 .......................................................................................................................... 4 2.1.2.1 基本流程(我们一般都是这么写) ................................................................................... 4 2.1.2.2 重要概念和类(你必须了解的东西) ............................................................................... 5 2.1.2.3 JUNIT 固件的安装与拆除(测试方法启动和结束之前要做的).................................... 6 2.1.2.4 Eclipse 中使用 junit(有了开发工具对 junit 的支持后) ................................................. 8 2.2 JUNIT 4.X 使用 ....................................................................................................................... 12 2.2.1 下载与安装 .................................................................................................................... 12 2.2.2 使用方法 ........................................................................................................................ 13 2.2.2.1 与 3.x 版本的异同(看谁更简单) .................................................................................. 13 2.2.2.2 常用注解(体验 annotation 的简单便捷) ...................................................................... 13 2.2.2.3 4.x 新特性实战(实践出真知) ....................................................................................... 14 3 作业规范 ...................................................................................................................................... 21 4 附录 .............................................................................................................................................. 22 4.1 下版计划 ............................................................................................................................. 22 4.2 修订记录 ............................................................................................................................. 23 4.3 参考文献 ............................................................................................................................. 23 Copyright © 2011 shaomeng95 版权所有 Page 2 of 23
3.
Junit 使用指南及作业规范 1. JUNIT
总览 1.1 简介 JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架。Junit测 试是程序员测试,即所谓白盒测试。 项目主页:http://www.junit.org/ 下载地址:https://github.com/KentBeck/junit/downloads http://sourceforge.net/projects/junit/files/junit/ 目前主要版本有3.X和4.X,它们之间存在很大的差别,故本文档将分别介 绍3.X和4.X. 1.2 特性 JUnit 是一个开放源代码的 Java 测试框架,用于编写和运行可重复的测试。 他是用于单元测试框架体系 xUnit 的一个实例(用于 java 语言)。它包括以下特 性: 1、用于测试期望结果的断言(Assertion) 2、用于共享共同测试数据的测试工具 3、用于方便的组织和运行测试的测试套件 4、图形和文本的测试运行器 1.3 适用对象 JUnit 可以用于程序开发人员或专业测试人员进行单元测试。 2 JUNIT 使用 下面将分别基于 junit 3.8.1 和 junit 4.8.1 分别讲解 junit 的用法。 2.1 JUNIT 3.X 使用 2.1.1 下载与安装 下载 junit3.8.1 包 将压缩包中的 junit.jar 加入工程的 classpath 中 Copyright © 2011 shaomeng95 版权所有 Page 3 of 23
4.
Junit 使用指南及作业规范
至此,在工程中将可以使用 junit 编写测试代码了。 2.1.2 使用方法 2.1.2.1 基本流程(我们一般都是这么写) 使用 junit 进行测试,一般可以总结为如下 4 个步骤: 1) 写测试类并继承 TestCase 类; 2) 写测试方法 testXXXX(); 3) 写测试套件类将 test case 加入 test suite; 4) 运行 TestRunner 进行测试; 如下代码所示,演示了基本的测试流程: //①继承TestCase类 public class CalculatorTest extends TestCase { //②测试方法必须以 test 开头 public void testAdd() { int result = new CalculatorTest().add(1, 2); Assert.assertEquals(3, result); } //③将testcase加入testsuite public static Test suite(){ return new TestSuite(CalculatorTest.class); } //④使用TestRunner运行测试套件 public static void main(String[] args) {//junit提供了swing,awt,text三种测试运行器 junit.awtui.TestRunner.run(CalculatorTest.class); } Run as Java Application,显示如下结果: Copyright © 2011 shaomeng95 版权所有 Page 4 of 23
5.
Junit 使用指南及作业规范
程序说明: 第③步中的 public static Test suite()为缺省的 TestSuite 入口,默认运行测试类 中的所有测试方法,故一般 suite()方法可以省略不写。 第④步中可以使用的运行器有三种分别为基于 AWT,SWING,TEXT 三种。 2.1.2.2 重要概念和类(你必须了解的东西) TestCase(测试用例) 当一个类继承 junit 的 TestCase 类,即成为一个测试类,它以 testXXXX 的形 式包含测试方法(public void 修饰)。 Copyright © 2011 shaomeng95 版权所有 Page 5 of 23
6.
Junit 使用指南及作业规范
TestSuite(测试集合或测试套件) 一组测试,将相关的测试归入一组,将多个测试方法归入一个 test suite,例 如上例中的缺省 test suite 默认会扫描测试类中的所有测试方法并归入测试集 合。如果没有为 test case 写 test suite 的话,系统会默认为每个 test case 生成 一个 test suite。 TestRunner(测试运行器) 用于执行 TestSuite,继承抽象类 BaseTestRunner。可以使用 BaseTestRunner 的子类 junit.awtui.TestRunner、junit.swingui.TestRunner、junit.textui.TestRunner 来运行测试集合。 TestResult(测试结果) 用于包含测试中发生的错误,次数等。 Assert(断言) 用于检测条件是否成立,当条件成立则 Assert 方法通过,否则抛出异常。例 如 Assert.assertEquals(3, result);判断 result 是否跟期望的 3 相等,如果相等则 通过,否则测试失败。 主要有如下几个断言方法: 1.assertTrue/False(); 判断一个条件是 true 还是 false。 2.fail(); 失败,可以有消息,也可以没有消息。 3.assertEquals(); 判断是否相等,可以指定输出错误信息。 注意不同数据类型所使用的 assertEquals 方法参数有所不同。 4.assertNotNull/Null(); 判读一个对象是否非空。 5.assertSame/NotSame(); 判断两个对象是否指向同一个对象。 7.failNotSame/failNotEquals() 当不指向同一个内存地址或者不相等的时候,输出错误信息。 错误信息为指定的格式。 2.1.2.3 JUNIT 固件的安装与拆除(测试方法启动和结束之前要做的) 回顾上面例子中的 testAdd 方法,我们看到为了得到测试目标类,我们必须 要 new CalculatorTest() , 如 果 要 再 写 一 个 测 试 方 法 , 仍 然 要 再 次 new CalculatorTest(),其实不需要这么麻烦的,Junit 已经为我们考虑到了,可以 Copyright © 2011 shaomeng95 版权所有 Page 6 of 23
7.
Junit 使用指南及作业规范 在测试类中
override 如下两个方法: 改写之前的代码如下: //①继承TestCase类 public class CalculatorTest extends TestCase { private Calculator cal; @Override public void setUp() throws Exception { System.out.println("执行setup"); cal = new Calculator(); } @Override public void tearDown() throws Exception { System.out.println("执行tearDown "); } //②测试方法必须以 test 开头 public void testAdd() { int result = cal.add(1, 2); Assert.assertEquals(3, result); } public void testAdd2() { int result = cal.add(1, 3); Assert.assertEquals(4, result); } //③将testcase加入testsuite public static Test suite(){ return new TestSuite(CalculatorTest.class); } //④使用TestRunner运行测试套件 public static void main(String[] args) {//junit提供了swing,awt,text三种测试运行器 junit.awtui.TestRunner.run(CalculatorTest.class); } Copyright © 2011 shaomeng95 版权所有 Page 7 of 23
8.
Junit 使用指南及作业规范 执行后的输入如下: 结果说明,每执行一个测试方法之前和之后都会分别执行 setUp
和 tearDown 方 法。 2.1.2.4 Eclipse 中使用 junit(有了开发工具对 junit 的支持后) Eclipse IDE 已经内置了对 junit 的支持,下面将演示在 eclipse 中的基本使用。 1) 在需要进行测试的类上右击->NEW->Other(如果能看到 junit 菜单则不 必选择 other) 2) 选择 Java->JUnit->JUnit Test Case(可直接在过滤栏中输入 junit,如下 图),然后 next。 Copyright © 2011 shaomeng95 版权所有 Page 8 of 23
9.
Junit 使用指南及作业规范
3) 对 Test Case 进行如下的设置。 Copyright © 2011 shaomeng95 版权所有 Page 9 of 23
10.
Junit 使用指南及作业规范
4) 选择需要测试的方法,生成测试方法的桩代码。 Copyright © 2011 shaomeng95 版权所有 Page 10 of 23
11.
Junit 使用指南及作业规范
5) 选择需要测试的方法,生成测试方法的桩代码。 6) 运行测试,右击->RUN AS->JUnit Test,由于 eclipse 对 junit 的支持,此 处我们无需调用 junit 的 TestRunner 来运行测试,eclipse 会自动检测到这 是 junit test case 并通过 eclipse 的 junit 插件来运行。 Copyright © 2011 shaomeng95 版权所有 Page 11 of 23
12.
Junit 使用指南及作业规范
7) 运行的结果如下图所示 2.2 JUNIT 4.X 使用 Junit 4.x 利用了 java 5 的特性(annotation)的优势,使得测试比起 3.x 版本 更加的方便简单,junit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个 框架的包结构已经彻底改变, 4.x 版本仍然能够很好的兼容旧版本的测试套件。 但 2.2.1 下载与安装 下载 junit4.8.1 包 将压缩包中的 junit-4.8.1.jar 加入工程的 classpath 中 Copyright © 2011 shaomeng95 版权所有 Page 12 of 23
13.
Junit 使用指南及作业规范
至此,在工程中将可以使用 junit 编写测试代码了。 2.2.2 使用方法 2.2.2.1 与 3.x 版本的异同(看谁更简单) JUnit3.x JUnit4.x 必须引入类 junit.framework.TestCase 必须引入 org.junit.Test;org.junit.Assert.* (static import) 必须继承类 TestCase 不需要 测试方法必须以 test 开头 不需要,但是必须加上@test 注解 通过 assertXXXX()方法来判断结果 2.2.2.2 常用注解(体验 annotation 的简单便捷) ★ @Before:初始化方法,在任何一个测试执行之前必须执行的代码; 跟3.X中的setUp()方法具有相同功能。格式:@Before public void method() Junit 3.x Junit 4.x public void setUp() throws Exception @Before { cal = new Calculator(); public void setUp() throws Exception } { cal = new Calculator(); } 覆盖父类TestCase的setUp()方法 使用@Before注解,方法名称随意 ★ @After:释放资源,在任何测试执行之后需要进行的收尾工作。跟 3.x 中的 tearDown()方法具有相同功能。格式:@After public void method() ★ @Test:测试方法,表明这是一个测试方法。在 Junit 中将会自动被执行。对 于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必 须为 void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异 常。该 annotation 可以测试期望异常和超时时间,如 @Test(timeout = 100),我 们给测试函数设定一个执行时间,超过了这个时间(100 毫秒),它们就会被系统 Copyright © 2011 shaomeng95 版权所有 Page 13 of 23
14.
Junit 使用指南及作业规范 强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可
以 发 现 这 些 Bug 了 。 同 时 还 可 以 测 试 期 望 的 异 常 , 例 如 : @Test(expected=IllegalArgumentException.class) ★ @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参 与此次测试” ;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。 一旦你完成了相应函数,只需要把@Ignore 标注删去,就可以进行正常的测试。 ★ @BeforeClass:针对所有测试,在所有测试方法执行前执行一次,且必须为 public static void;此 annotataion 为 4.x 新增功能。格式:@BeforeClass public void method() ★ @AfterClass:针对所有测试,在所有测试方法执行结束后执行一次,且必 须为 public static void; 此 annotataion 为 4.x 新增功能。格式: AfterClass public @ void method() 所以 Junit 4 的单元测试用例执行顺序为: @BeforeClass –> @Before –> @Test –> @After –> @AfterClass; 每一个测试方法的调用顺序为: @Before –> @Test –> @After。 2.2.2.3 4.x 新特性实战(实践出真知) 1) @Test 测试异常和超时 Copyright © 2011 shaomeng95 版权所有 Page 14 of 23
15.
Junit 使用指南及作业规范 通过对@Test
传入 expected 参数值,即可测试异常。通过传入异常类后,测试 类如果没有抛出异常或者抛出一个不同的异常,测试方法就将失败。 或者 输出结果: @Test(expected=IndexOutOfBoundsException.class) public void outOfBounds() { new ArrayList<Object>().get(1); } @Test(expected=Exception.class) public void outOfBounds() { new ArrayList<Object>().get(1); } Copyright © 2011 shaomeng95 版权所有 Page 15 of 23
16.
Junit 使用指南及作业规范 如果将期望的异常修改为其他的异常(IllegalArgumentException),则测试不通
过 Copyright © 2011 shaomeng95 版权所有 Page 16 of 23
17.
Junit 使用指南及作业规范 通过对@Test
传入 timeout 参数值即可进行超时测试,如果测试运行时间超过指 定的毫秒数,则测试失败。 @Test(timeout=1) public void verifyReg() { Matcher matcher=pattern.matcher("2010-10-2"); boolean isValid=matcher.matches(); assertTrue("pattern is not match",isValid); } 结果如下: 修改代码,延时 1s @Test(timeout=1) public void verifyReg() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Matcher matcher=pattern.matcher("2010-10-2"); boolean isValid=matcher.matches(); assertTrue("pattern is not match",isValid); } Copyright © 2011 shaomeng95 版权所有 Page 17 of 23
18.
Junit 使用指南及作业规范
2) 测试套件 JUnit4 中最显著的特性是没有套件(套件机制用于将测试从逻辑上的分组并 将这这些测试作为一个单元测试来运行)。为了替代老版本的套件测试,套件被 两个新注释代替:@RunWith、@SuteClasses。通过@RunWith 指定一个特殊的运 行器:Suite.class 套件运行器,并通过@SuiteClasses 注释,将需要进行测试的类 列表作为参数传入 编写流程如下: 创建一个空类作为测试套件的入口; 将@RunWith、@SuiteClasses 注释修饰这个空类; 把 Suite.class 作为参数传入@RunWith 注释,以提示 JUnit 将此类指定为运行器; 将需要测试的类组成数组作为@SuiteClasses 的参数。 如下例所示: Copyright © 2011 shaomeng95 版权所有 Page 18 of 23
19.
Junit 使用指南及作业规范
/* * @RunWith(Suite.class) * @SuiteClasses({CalculatorTest.class,ExceptionTest.class}) * 也可以; * CalculatorTest.class为基于junit3,ExceptionTest.class为基于junit4 * 的用例,由此可见junit4是可以兼容junit3运行的,故在旧系统中可以直接升级 * 为junit4 */ @RunWith(value = Suite.class) @SuiteClasses(value = { CalculatorTest.class,ExceptionTest.class}) public class TestAll{ } 结果如下,运行了两个 test case,一个通过一个未通过: 3) 参数化测试 为测试程序健壮性,可能需要模拟不同的参数对方法进行测试,不可能为 不同的参数创建一个测试方法。参数化测试能够创建由参数值供给的通用测试, 从而为每个参数都运行一次,而不必要创建多个测试方法。 参数化测试编写流程如下: Copyright © 2011 shaomeng95 版权所有 Page 19 of 23
20.
Junit 使用指南及作业规范
为参数化测试类用@RunWith 注释指定特殊的运行器:Parameterized.class; 在测试类中声明几个变量,分别用于存放测试数据和对应的期望值,并创建一个带参 数的构造函数(参数为测试数据和期望值); 创建一个静态(static)测试数据供给方法,其返回类型为 Collection,并用@Parameter 注释以修饰; 编写测试方法。 @RunWith(Parameterized.class)//1.使用参数化运行器 public class ParameterTest { private String dateReg; private Pattern pattern; //2.测试数据与对应期望值的变量 private String phrase; private boolean match; //3.带参数的构造函数(参数为测试数据和对应期望值变量) public ParameterTest(String phrase, boolean match) { this.phrase = phrase; this.match = match; } //4.数据供给方法(静态,用@Parameter注释,返回类型为Collection) @Parameters public static Collection<Object[]> dateFeed() { return Arrays.asList(new Object[][] { { "2010-1-2", true }, { "2010-10-2", true }, { "2010-123-1", false }, { "2010-12-45", true } }); } @Before public void init() { dateReg = "^d{4}(-d{1,2}){2}"; pattern = Pattern.compile(dateReg); } @Test public void verifyDate() { Matcher matcher = pattern.matcher(phrase); boolean isValid = matcher.matches(); assertEquals("Pattern don't validate the data format", isValid, match); Copyright} 2011 shaomeng95 版权所有 © Page 20 of 23 }
21.
Junit 使用指南及作业规范 运行结果如下,执行了四次测试: 3
作业规范 本规范来自 junit 自身的编程规则以及最佳实践,本规范未提及的注释,代码 格式等请参考公司其他规范,此处只针对单元测试代码。 1) 单元测试代码应位于单独的 Source Folder 下 此 Source Folder 通常为 test,这样可以方便管理业务代码与测试代码。 2) 测试类应跟被测试类位于统一 package 下 便于进行管理同时减少引入带测试类的麻烦。 Copyright © 2011 shaomeng95 版权所有 Page 21 of 23
22.
Junit 使用指南及作业规范
3) 选择有意义的测试方法名 无论是 junit4.x 还是 3.x,单元测试方法名均需使用 test<待测试方法名称>[概要描 述],如 public void testDivideDivisorIsZero(),很容易知道测试方法的含义。 4) 保持测试的独立性 每项单元测试都必须独立于其他所有单元测试而运行,因为单元测试须能以任何 顺序运行。 5) 为暂未实现的测试代码抛出失败(fail)或忽略(ignore) 如果是 junit3.x,可以在未实现的测试方法中使用 fail("Not yet implemented");以告 知失败是因为测试方法未实现,如果是 junit4.x,可以在测试方法上使用注解 @Ignore("Not yet implemented "),需要注意的是一定要在 ignore 中加入忽略的原因 (Not yet implemented)。 6) 在调用断言(assert)方法时给出失败的原因 在使用断言方法时,请使用带有 message 参数的 api,并在调用时给出失败时的原 因描述,如 assertNotNull(“对象为 null”,new Object())。 4 附录 4.1 下版计划 执行动作 描述 对应版本 时间 增加 常见单元测试设计方法 V1.1 2011-03-10~2011-03-20 增加 与容器相关测试 V1.2 2011-04-02~2011-04-20 Copyright © 2011 shaomeng95 版权所有 Page 22 of 23
23.
Junit 使用指南及作业规范 4.2 修订记录 主题
描述 修订者 修订时间 4.3 参考文献 1) 《JUnit in action》 2) Junit 官方网站:http://www.junit.org 3) 维基百科 Copyright © 2011 shaomeng95 版权所有 Page 23 of 23
Jetzt herunterladen