标签:
本教程使用JUnit4.x介绍单元测试,包含创建JUnit测试,也涉及用Eclipse IDE的进行测试。
软件测试执行的软件以验证状态和行为。
软件单元测试帮助开发人员验证小段程序的逻辑是正确的。
自动化回归测试可以提高代码覆盖率,节省大量人力。
单元测试执行指定代码中的功能并验证其行为或状态。
被测代码的百分比叫做覆盖率。
单元测试针对一小段代码(类,方法),又叫本地测试,应该被移除外部依赖,例如用测试框架的测试实现或者mock对象替换外部依赖。
单元测试并不适合复杂的UI或组件交互,这是集成测试的工作。
集成测试测试组件的行为或组件之间的集成。
性能测试使用基准测试反复测试软件组件。确保测试的代码运行在速度够快(甚至高负载下)。
行为测试(也叫交互测试)不验证的方法调用的结果,但检查方法是否用正确的输入参数调用。
状态测试验证的结果。
算法或者系统功能以状态测试为主
通常单元测试是在单独的工程或源文件夹,和真正的代码独立。
测试内容是一个非常有争议的话题。一些开发人员认为代码中的每条语句都需要进行测试。在任何情况下都应该测试应用程序的关键和复杂的部分。引入新的功能,扎实的测试套件可以快速进行回归测试。
可以忽略一些简单的代码,例如getter和setter方法??,它是简单地赋值。编写这些测试非常耗时,而且毫无意义的,因为你在测试Java虚拟机。 JVM本身已经有测试,开发最终用户的应用程序可以认为字段赋值在Java中能工作。
如果接手的工程中没有测试代码,最好为过去经常发生错误的部分写测试,这样就能集中精力去做关键部分。
Java中常见的测试框架有Junit和TestNG。
JUnit的4.x版使用注解来指定测试。主页参见http://junit.org/和https://github.com/junit-team/junit。
JUnit测试是类中用于测试的方法。使用注解@org.junit.Test。方法中使用的断言方法(JUnit或其他断言框架提供),检查代码的执行的实际结果与预期。
下面的代码演示JUnit测试。该测试假定MyClass类存在,并且有multiply(int, init)方法。
import static org.junit.Assert.assertEquals; import org.junit.Test; public class MyTests { @Test public void multiplicationOfZeroIntegersShouldReturnZero() { // MyClass is tested MyClass tester = new MyClass(); // assert statements assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertEquals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertEquals("0 x 0 must be 0", 0, tester.multiply(0, 0)); } }
在广泛使用的Junit命名方法是类名称下测试和“测试”加Test后缀。should常用于测试方法名,如ordersShouldBeCreated
,menuShouldGetActive
,以增强可读性。Maven通过surfire插件自动生成Tests后缀的测试类。
多个测试类可以组合成test suite。运行test suite将在该suite按照指定的顺序执行所有测试类。下面演示包含两个测试类 (MyClassTest和MySecondClassTest)
的测试集,通过@Suite.SuiteClasses statement可以
增加测试类。
package com.vogella.junit.first; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({ MyClassTest.class, MySecondClassTest.class }) public class AllTests { }
test suite中也可以包含test suite。
通过标准的Java代码可以在Eclipse之外运行JUnit测试。Apache Maven的或Gradle框架之类的构建框架通常与持续集成服务器(如Hudson或Jenkins)组合定期自动执行测试。
org.junit.runner.JUnitCore
类的runClasses()
方法允许运行测试类,返回为org.junit.runner.Result
对象,包含测试结果信息。
下面类演示如何运行MyClassTest。这个类将执行测试类,输出潜在错误到控制台。
package de.vogella.junit.first; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class MyTestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } }
以上类可以像Java类一样从命令行运行,你只需要添加JUnit Jar到classpath即可。
Unit Testing with JUnit - Tutorial
http://azyet.github.io/2015/05/19/junitNote1/
标签:
原文地址:http://www.cnblogs.com/pythontesting/p/4926670.html