JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即白盒测试。该项目主页:http://www.junit.org/
JUnit测试骨架
使用JUnit时,主要都是通过继承TestCase类别来撰写测试用例,使用testXXX()名称来撰写单元测试。
用JUnit写测试真正所需要的就三件事:
1. 一个import语句引入所有junit.framework.*下的类。
2. 一个extends语句让你的类从TestCase继承。
3. 一个调用super(string)的构造函数。
功能类MathTool
1. package com.zj.c01;
2. public class MathTool {
3. public static int gcd(int num1, int num2) {
4. int r = 0;
5. while (num2 != 0) {
6. r = num1 % num2;
7. num1 = num2;
8. num2 = r;
9. }
10. return num1;
11. }
12. }
测试类MathToolTest
1. package com.zj.c01;
2. import junit.framework.TestCase;
3.
4. public class MathToolTest extends TestCase {
5. public MathToolTest(String name) {
6. super(name);
7. }
8.
9. public void testGcd() {
10. assertEquals(5, MathTool.gcd(10, 5));
11. }
12. }
使用Eclipse-Run As JUnit Test
在运行TestRunner执行测试时,你会发现到有Failure与Error两种测试尚未通过的信息。
Failure指的是预期的结果与实际运行单元的结果不同所导致,例如当使用assertEquals()或其它assertXXX()方法断言失败时,就会回报Failure,这时候要检查你的单元方法中的逻辑设计是否有误。
Error指的是你的程序没有考虑到的情况,在断言之前程序就因为某种错误引发例外而终止,例如在单元中存取某个数组,因为存取超出索引而引发 ArrayIndexOutOfBoundsException,这会使得单元方法无法正确完成,在测试运行到asertXXXX()前就提前结束,这时候要检查你的单元方法中是否有未考虑到的情况而引发流程突然中断。
JUnit的各种断言
JUnit提供了一些辅助函数,用于帮助你确定某个被测试函数是否工作正常。通常而言,我们把所有这些函数统称为断言。断言是单元测试最基本的组成部分。
1. assertEquals([String message], expected,actual)
比较两个基本类型或对象是否相等(expected和actual是原始类型数值(primitive value)或者必须为实现比较而具有equal方法);
2.assertFalse([String message],boolean condition)
对布尔值求值,看它是否为“真“;
3.assertTrue([String message],boolean condition)
对布尔值求值,看它是否为“假“;
4.assertNull([String message],java.lang.Object object)
检查对象是否为“空“;
5.assertNotNull([String message],java.lang.Object object)
检查对象是否不为“空”;
6.assertSame([String message],expected,actual)
检查两个对象是否为同一实例;
7.assertNotSame([String message],expected,actual)
检查两个对象是否不为同一实例;
8. fail( String message )
使测试立即失败,其中 message 参数使可选的。这种断言通常被用于标记某个不应该到达的分支(例如,在一个预期发生的异常之后)。
分享到:
相关推荐
例如,在Eclipse中,右键选择待测试的类,新建JUnit测试用例,指定测试类名和根目录,IDE会自动生成基本的测试框架,包括`setUp()`和`tearDown()`方法,以及针对每个测试方法的骨架。 测试用例通常包含以下几个关键...
最后,“junit”目录可能包含了JUnit库的jar文件,这是运行和编写JUnit测试的必需组件。开发者通常会将这个jar文件添加到项目的类路径中,以便能够使用JUnit提供的所有功能。 总的来说,"junit-4.5-SNAPSHOT-...
- **简化测试执行**:JUnit通过`TestCase`的`run()`方法简化了测试的执行流程,使用户只需关注测试逻辑本身。 - **避免硬编码**:通过使用Command模式,JUnit避免了在执行测试时的硬编码,使得测试更加灵活。 ...
5. 模板方法模式:`TestCase`类定义了一个模板方法,即`runTest()`,它是所有测试用例的骨架。子类可以重写`setUp()`和`tearDown()`方法,这些方法会在每个测试前后的固定时刻被调用,形成了一种模板方法模式。 6. ...
在NetBeans这样的IDE中,可以使用内置的插件自动生成测试类的骨架。对于PpProxy4JCoMMRFQ,我们创建了一个名为PpProxy4JCoMMRFQTest的测试类。这个类将包含一系列的测试方法,每个方法对应PpProxy4JCoMMRFQ类中的一...
在Humber College的课程设计模式与软件测试中,学生们被分配了一个名为"BankApplication-DesignPatternsAssignment"的任务,旨在将理论知识应用于实际项目开发,以构建一个具备图形用户界面(GUI)和JUnit测试用例的...
- **定义**: JUnit是一种用于Java编程语言的单元测试框架,属于xUnit测试框架家族的一员。 - **最新版本及特点**: - 最新版本(JUnit 4)引入了许多新特性,比如注解(@Before, @After, @Test等),这些注解简化了测试...
`maven-archetype-quickstart` 就是这样一个模板,用于创建一个简单的Java应用,包含一个主类和一个JUnit测试类。当我们使用`mvn archetype:generate`命令并指定这个archetype时,Maven会自动生成一个全新的项目结构...
在Appfuse中,我们可以创建一个名为DaoTest的JUnit测试类,该类将测试DAO的功能,包括插入、更新、查询和删除数据库记录。 4. **创建一个对对象执行CRUD操作的新DAO** CRUD代表创建(Create)、读取(Retrieve)、更新...
例如,JUnit中的`TestCase`类使用了模板方法模式,`runTest()`方法定义了执行测试的基本流程,而测试类只需覆盖`setUp()`和`tearDown()`等方法来准备和清理测试环境,而具体的测试逻辑则通过`@Test`注解的函数来实现...
锻造骨架用于建造Forge mods的骨架去做从字符串支持Curse ChangeLog(部分完成) Traar的Sonarqube和Jar签名支持Sonarqube和Jar签名支持CircleCI 秘密解析器也应该支持Gradle属性修复JUnit3,JUnit4和JUnit Vintage...
6. **自动化测试支持**:内置了 JUnit 测试框架的支持,帮助开发者进行单元测试和集成测试,确保代码质量。 #### 三、Appfuse框架的组成部分 Appfuse 主要分为以下几个部分: 1. **DAO(Data Access Object)层**...
在Android开发中,我们可以使用JUnit和 Espresso 进行单元测试和UI测试。对于四大组件,每个组件都有特定的测试策略。例如,Activity可以通过ActivityTestRule进行测试,Service则可以使用ServiceTestRule,而...
这是使用 maven、cucumber-jvm 和 selenium webdriver 的测试框架的骨架。 这遵循使用 PageFactory 实例化页面对象的页面对象设计模式。 这包含一个用于 BBC 网页演示目的的场景。 如何运行测试: 要在本地运行...
- 对于测试,Spring Boot支持JUnit和Mockito等库进行单元测试和集成测试。 通过这个实例,初学者能够理解Spring Boot项目的基本构建和运行流程,以及如何利用IDEA和Maven工具来加速开发。学习并熟练掌握这些知识点...
3. **测试骨架生成**:为每个可测试的单元创建基本的测试结构,包括设置、执行和断言部分。 4. **集成开发环境(IDE)集成**:与常见的IDE如Visual Studio、IntelliJ IDEA、Eclipse等集成,提供快捷的生成和运行测试...
8. **单元测试**:使用 JUnit 或 Spock 进行代码测试。 9. **文档**:如 README 文件,提供关于如何运行和使用项目的说明。 总的来说,这个工具是为了简化基于 LeeSite 的 Java Web 项目初始化过程而设计的,通过...
此外,开发过程中还会涉及到单元测试、集成测试,使用JUnit、Mockito等工具进行验证。持续集成和部署可能涉及Jenkins、Docker等技术。 总的来说,这个压缩包文件提供的是一个Java Web后端开发的基础框架,涵盖了...