版本历史java |
该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit 数据库
目录 编程
1. Junit介绍 3 框架
1.1. 简介 3 eclipse
2.1. 对于极限编程而言 3 单元测试
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,由于程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就能够用Junit进行自动测试了。
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma创建,逐渐成为源于Kent Beck的sUnit的xUnit家族中为最成功的一个。 JUnit有它本身的JUnit扩展生态圈。
多数Java的开发环境都已经集成了JUnit做为单元测试的工具。
要求在编写代码以前先写测试,这样能够强制你在写代码以前好好的思考代码(方法)的功能和逻辑,不然编写的代码很不稳定,那么你须要同时维护测试代码和实际代码,这个工做量就会大大增长。所以在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,并且编写测试和编写代码都是增量式的,写一点测一点,在编写之后的代码中若是发现问题能够较快的追踪到问题的缘由,减少回归错误的纠错难度。
其好处和极限编程中是相似的,由于重构也是要求改一点测一点,减小回归错误形成的时间消耗。
咱们在开发的时候使用junit写一些适当的测试也是有必要的,由于通常咱们也是须要编写测试的代码的,可能原来不是使用的junit,若是使用junit,并且针对接口(方法)编写测试代码会减小之后的维护工做,例如之后对方法内部的修改(这个就是至关于重构的工做了)。另外就是由于junit有断言功能,若是测试结果不经过会告诉咱们哪一个测试不经过,为何,而若是是像之前的通常作法是写一些测试代码看其输出结果,而后再由本身来判断结果使用正确,使用junit的好处就是这个结果是否正确的判断是它来完成的,咱们只须要看看它告诉咱们结果是否正确就能够了,在通常状况下会大大提升效率。
JUnit 4.x 引用了注解的方式来对方法进行测试。一般测试方法都是被包含在一个 测试类 中
使用下面的代码来建立一个单元测试 . 经过以下操做: File → New → JUnit → JUnit Test case.
@Test
public void testMultiply() {
MyClass tester = new MyClass();
assertEquals( "10 x 5 must be 50 " , 50, tester.multiply( 10, 5 ) );
}
JUnit 假设可使用任意的顺序执行测试方法。于是测试不依赖于其余的测试方法。
可使用注解 @org.junit.Test 来修饰方法,以建立一个测试方法。而后使用预期的值 与 真实的值来检查方法是否正确。
你可使用 Eclipse IDE方式来运行一个测试类,经过以下操做:右键点击须要测试的类而且选择 Run → Run As → JUnit Test。
也可使用类 org.junit.runner.JUnitCore运行测试类,而不依赖于Eclipse。
该方法能够标记须要测试的类,选择要执行的测试。只有被选定的测试将会执行。
注解 |
描述 |
@Test public void method() |
@Test 注解表明方法是一个测试方法。 |
@Test (expected = Exception.class) |
表示预期会抛出Exception.class 的异常 |
@Test(timeout=100) |
表示预期方法执行不会超过 100 毫秒. |
@Before |
表示该方法在每个测试方法以前运行,可使用该方法进行初始化之类的操做 |
@After |
表示该方法在每个测试方法以后运行,可使用该方法进行释放资源,回收内存之类的操做 |
@BeforeClass |
表示该方法只执行一次,而且在全部方法以前执行。通常可使用该方法进行数据库链接操做,注意该注解运用在静态方法。 |
@AfterClass |
表示该方法只执行一次,而且在全部方法以后执行。通常可使用该方法进行数据库链接关闭操做,注意该注解运用在静态方法。 |
@Ignore |
表示该方法忽略。通常在低层代码有所改动,可是未实现,能够暂时忽略掉。也能够忽略掉执行时间过长的测试。 |
JUnit在类 Assert提供了一些静态的方法来测试某些条件。这些方法通常以 assert开头,容许你指定消息( message ),预期的值 ( expected ),真实的值 ( actual )。一个断言方法比较返回的真实值和预期值,若是比较失败则会抛出 AssertionException 异常
下表给出了JUnit 4.x可使用的断言方法的一个概述. 参数中的[]表示可选。
语句 |
描述 |
fail(String) |
表示让测试方法失败。通常用于某些代码执行不到,或者在fail代码以前就失败了。参数是可选的。 |
assertTrue([message], boolean condition) |
表示给出的条件断言为真。. |
assertFalse([message], boolean condition) |
表示给出的条件断言为假。. |
assertEquals([String message], expected, actual) |
表示测试两个值的内容相等。注意数组是检查引用相同而不是数组的内容。 |
assertEquals([String message], expected, actual, tolerance) |
测试float或double值匹配。容差是小数点后的位数,必须是相同的。assertEquals( 1.1f, 1.1111d, 1); 。 |
assertNull([message], object) |
表示检查的对象为空。 |
assertNotNull([message], object) |
表示检查的对象为非空。 |
assertSame([String], expected, actual) |
表示两个变量指向同一个引用。 |
assertNotSame([String], expected, actual) |
表示两个变量指向非同一个引用。 |
若是你须有多个测试单元,能够合并成一个测试套件进行测试。而且能够按照指定的顺序执行全部的测试类。
下面的代码示例建立了一个测试套件来执行两个测试单元。若是你要添加其余的测试单元可使用语句 @Suite.SuiteClasses 进行注解。
package cn.nsccsz;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith( Suite.class )
@SuiteClasses( { JUnit1Test.class, StringUtilTest.class } )
public class JSuit {
}
JUnit 提供了使用标准的Java代码形式执行测试,而不依赖于Eclipse。一般使用类
org.junit.runner.JUnitCore 类提供的静态的方法runClasses()。
下面的代码例子展现了如何使用 JUnitCode 来测试。
public class MyTestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(JUnit1Test.class,
StringUtilTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println( "执行方法个数:" + result.getRunCount() );
System.out.println( "执行时间:" + result.getRunTime() );
}
}
可使用Ant脚本的方式或者Java命令方式,例如:
java -cp .;D:\Users\Administrator\.m2\repository\junit\junit\4.8.2\junit-4.8.2.jar cn.nsccsz.MyTestRunner
Eclipse容许你使用不一样版本Junit进行集成。通常Eclipse已经默认集成了JUnit3.x和JUnit4.x 不一样的版本
能够从下面的官网下载 JUnit4.x.jar. 下载好的 junit-4.*.jar 添加到classpath.
http://junit.org/
右键单击选中的类,在Package Explorer视图中右键选中 New → JUnit Test Case.
File → New → Other... → Java → JUnit.
要运行测试类,选中包含测试方法的类。右键点击 Run-as → JUnit Test,将会执行全部的测试方法。
Eclipse 提供了快捷键运行测试类,快捷键为 Alt+Shift+X, ,T。若是你光标选中了某个方法,则会只运行选中的方法。
To see the result of an JUnit test, Eclipse uses the JUnit view which shows the results of the tests. You can also select individual unit test in this view , right-click them and select Run to execute them again.
Eclipse提供了JUnit view视图来显示测试运行的结果。在这个视图中你能够选中个别的测试类,右键选中来Run运行它们。
默认的状况下该视图显示全部的测试信息。你能够经过以下配置设置只显示失败的测试。
Eclipse 支持JUnit 的静态导入功能,使用 Ctrl+1 或者 Content Assist功能快捷键 。查看下图。
Content Assist 对静态导入的配置。
To create a test suite in Eclipse you select the test classes which should be included into this in the Package Explorer view, right-click on them and select New → Other... → JUnit → JUnit Test Suite.
在Eclipse中建立测试套件的方法
右键选中须要建立套件的包,选中 New → Other... → JUnit → JUnit Test Suite.
注解 @Test (expected = Exception.class) 限制了只能测试一个异常。可使用下面的代码测试更多异常。
@Test
public void testExceptions() {
try {
StringUtil.mustThrowException();
fail();
} catch( Exception e ) {
// expected.
}
try {
StringUtil.mustThrowException();
fail();
} catch( Exception e ) {
// expected.
}
}