从头学jUnit,简单介绍一些功能,和一些问题的解决办法
先介绍一些jUnit4.x的标签
[table]
|Annotation|Description|
|@Test|声明测试方法|
|@Before|每个测试运行前执行,提供测试环境(比如读数据,实例初始化)|
|@After|每个测试运行后执行,清空测试环境(删除临时数据等)|
|@BeforeClass|静态方法,只执行一次,在所有测试开始前执行,一般用于连接数据库这种比较耗时间的动作|
|@AfterClass|静态方法,只执行一次,所有测试完成后执行,一般用于清除动作,如数据库断开|
|@Ignore|忽略测试方法,当测试方法不再适用或执行时间过长时使用|
|@Test (expected = Exception.class)|当方法执行没有抛出异常时Fails|
|@Test(timeout=100)|当方法执行超过100毫秒Fails|
[/table]
注意:jUnit认为测试按随便顺序进行,因此测试方式之间不应相互依赖。
junit以Assert类提供的静态方法(方法名以asserts)作测试.
[table]
|Statement |Description|
|fail(String) |一般用于检测是否进入莫段代码,或者在测试代码执行前调用|
|assertTrue([message], boolean condition) |boolean条件检测|
|assertsEquals([String message], expected, actual) |测试两个值是否相同。注意:检测数组时,测试其引用是否相同而不是数组内容|
|assertsEquals([String message], expected, actual, tolerance) |测试float、double值.tolerance表示匹配的精准.|
|assertNull([message], object) |对象为空.|
|assertNotNull([message], object) |对象不为空.|
|assertSame([String], expected, actual) |两变量指向同一对象.|
|assertNotSame([String], expected, actual) |两变量指向不同对象.|
[/table]
JUnit使用静态方法,Eclipse不是总能自动地静态导入(static import).
解决办法:Open the Preferences via Window → Preferences and select Java → Editor→Content Assist→Favorites→New Type→add "org.junit.Assert"
[img]http://www.vogella.com/articles/JUnit/images/xstaticimport10.png.pagespeed.ic.Q7bManXH2O.png[/img]
TestSuite你可以批量执行测试类。只需要在SuiteClasses中加入你的测试类,然后运行
先介绍一些jUnit4.x的标签
[table]
|Annotation|Description|
|@Test|声明测试方法|
|@Before|每个测试运行前执行,提供测试环境(比如读数据,实例初始化)|
|@After|每个测试运行后执行,清空测试环境(删除临时数据等)|
|@BeforeClass|静态方法,只执行一次,在所有测试开始前执行,一般用于连接数据库这种比较耗时间的动作|
|@AfterClass|静态方法,只执行一次,所有测试完成后执行,一般用于清除动作,如数据库断开|
|@Ignore|忽略测试方法,当测试方法不再适用或执行时间过长时使用|
|@Test (expected = Exception.class)|当方法执行没有抛出异常时Fails|
|@Test(timeout=100)|当方法执行超过100毫秒Fails|
[/table]
注意:jUnit认为测试按随便顺序进行,因此测试方式之间不应相互依赖。
junit以Assert类提供的静态方法(方法名以asserts)作测试.
[table]
|Statement |Description|
|fail(String) |一般用于检测是否进入莫段代码,或者在测试代码执行前调用|
|assertTrue([message], boolean condition) |boolean条件检测|
|assertsEquals([String message], expected, actual) |测试两个值是否相同。注意:检测数组时,测试其引用是否相同而不是数组内容|
|assertsEquals([String message], expected, actual, tolerance) |测试float、double值.tolerance表示匹配的精准.|
|assertNull([message], object) |对象为空.|
|assertNotNull([message], object) |对象不为空.|
|assertSame([String], expected, actual) |两变量指向同一对象.|
|assertNotSame([String], expected, actual) |两变量指向不同对象.|
[/table]
JUnit使用静态方法,Eclipse不是总能自动地静态导入(static import).
解决办法:Open the Preferences via Window → Preferences and select Java → Editor→Content Assist→Favorites→New Type→add "org.junit.Assert"
[img]http://www.vogella.com/articles/JUnit/images/xstaticimport10.png.pagespeed.ic.Q7bManXH2O.png[/img]
TestSuite你可以批量执行测试类。只需要在SuiteClasses中加入你的测试类,然后运行
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 {
}