百度网站主要提供的服务,网站繁体和中文这么做,学校网页设计模板html,iis php7 wordpress1. 单元测试的基本概念 单元#xff08;Unit#xff09;#xff1a;软件系统的基本组成单位#xff0c;可以是函数、模块、方法或类。 单元测试#xff08;Unit Testing#xff09;#xff1a;对软件单元进行的测试#xff0c;验证代码的正确性、规范性、安全性和性能… 1. 单元测试的基本概念 单元Unit软件系统的基本组成单位可以是函数、模块、方法或类。 单元测试Unit Testing对软件单元进行的测试验证代码的正确性、规范性、安全性和性能。 特点 单元相互独立互不影响。 及时发现代码缺陷降低纠错成本。 主要由程序员负责测试员辅助。 可并行开展。 依据《软件详细规格说明书》。 以代码覆盖率作为评估标准。 需要开发辅助的测试程序。
2. 动态测试 驱动程序Driver模拟被测模块的上级模块调用被测模块并传递测试数据。 桩程序Stub模拟被测模块调用的下层模块便于检查接口。 示例某程序将摄氏温度转换为华氏温度测试GUI模块时需要配置驱动模块和桩模块。
3. 自动化单元测试框架JUnit JUnit简介 针对Java语言的单元测试框架1997年由Erich Gamma和Kent Beck开发。 JUnit4对测试框架体系结构进行了重大调整与JUnit3有较大不同。 JUnit的设计思想被抽象为xUnit框架已移植到多种语言和环境中。 技术特点 简化测试代码编写。 测试代码与产品代码分离。 测试代码可自动运行。 提供丰富的断言方法。 支持固化方法资源分配和释放。 可将测试用例组织成测试套件。 支持文本和图形运行界面。
4. JUnit的测试类和测试方法 测试类包含测试代码定义一组测试方法。 测试方法需满足以下条件 方法名用Test注解修饰。 必须用public void修饰。 不带任何参数。 示例 java复制 Test
public void test01() throws Exception {isu new InsuredPerson(20, M, false);int p isu.premium();assertEquals(600, p);
}
5. JUnit的断言Assertion 常用断言方法 assertEquals(expected, actual)判断预期结果与实际结果是否相同。 assertArrayEquals(expected, actuals)判断数组是否相同。 assertSame(expected, actual)判断是否引用相同对象。 assertTrue(condition)判断条件是否为真。 assertNull(obj)判断对象是否为空。 fail()直接指示测试失败。
6. JUnit的固化方法Fixture 固化方法用于分配和释放资源。 BeforeClass类构造固化方法测试前调用一次。 AfterClass类析构固化方法测试后调用一次。 Before构造固化方法每次执行测试方法前调用。 After析构固化方法每次执行测试方法后调用。 示例 java复制 BeforeClass
public static void setUpBeforeClass() throws Exception {System.out.println(setUpBeforeClass);
}
AfterClass
public static void tearDownAfterClass() throws Exception {System.out.println(tearDownAfterClass);
}
Before
public void setUp() throws Exception {System.out.println(setUp);
}
After
public void tearDown() throws Exception {System.out.println(tearDown);
}
7. 参数化测试 参数化测试将测试用例集组织在一个线性表中JUnit框架遍历线性表每次取出一条测试用例作为参数实例化一个测试类对象。 参数化测试类的特征 用RunWith(Parameterized.class)注解修饰。 定义一个存储测试用例的数据域集合。 定义一个以测试用例为参数的构造方法。 定义一个静态方法用Parameters注解修饰返回测试用例线性表。 定义至少一个测试方法。
8. 异常测试和超时测试 异常测试通过Test(expected 异常类.class)指定预期异常。 java复制 Test(expected Exception.class)
public void test03() throws Exception {isu new InsuredPerson(10, M, true);isu.premium();
} 超时测试通过Test(timeout 超时时限)指定超时时间。 java复制 Test(timeout 1000)
public void test() throws Exception {isu new InsuredPerson(10, M, true);isu.premium(); /* 假设premium中包含超时操作 */
}
9. 测试套件 测试套件Test Suite一种特殊的测试类包含若干其他测试类执行测试套件即成批地自动执行套件中的所有测试类。 特征 用RunWith(Suite.class)注解修饰。 用SuiteClasses({测试类1.class, 测试类2.class, ...})指定测试套件中包含的测试类。 是一个空类没有定义任何数据域和方法。
10. 实验练习提示 教学目标掌握JUnit的初级和高级用法包括参数化测试类和编写测试套件。 主要内容 初级核心运行器、固化方法、断言。 高级异常测试、参数化运行器、测试套件运行器。 建议练习 使用Test注解的JUnit方法。 使用assertEquals断言比较变量或对象。 使用Test(expected Exception.class)注解的JUnit方法。 使用RunWith(Parameterized.class)和Parameters注解的JUnit方法。 使用测试套件RunWith(Suite.class)和SuiteClasses({})。
总结
这份PPT详细介绍了单元测试的基本概念、JUnit框架的特点和使用方法以及如何设计和运行测试用例。通过学习这些内容可以掌握如何使用JUnit进行自动化单元测试提高代码质量和测试效率。