转载jUnit单元测试,感谢原著分享
从头学jUnit,简单介绍一些功能,和一些问题的解决办法
先介绍一些jUnit4.x的标签
注意:jUnit认为测试按随便顺序进行,因此测试方式之间不应相互依赖。
junit以Assert类提供的静态方法(方法名以asserts)作测试.
JUnit使用静态方法,Eclipse不是总能自动地静态导入(static import).
解决办法:Open the Preferences via Window → Preferences and select Java → Editor→Content Assist→Favorites→New Type→add "org.junit.Assert"
TestSuite你可以批量执行测试类。只需要在SuiteClasses中加入你的测试类,然后运行
先介绍一些jUnit4.x的标签
Annotation | Description |
@Test | 声明测试方法 |
@Before | 每个测试运行前执行,提供测试环境(比如读数据,实例初始化) |
@After | 每个测试运行后执行,清空测试环境(删除临时数据等) |
@BeforeClass | 静态方法,只执行一次,在所有测试开始前执行,一般用于连接数据库这种比较耗时间的动作 |
@AfterClass | 静态方法,只执行一次,所有测试完成后执行,一般用于清除动作,如数据库断开 |
@Ignore | 忽略测试方法,当测试方法不再适用或执行时间过长时使用 |
@Test (expected = Exception.class) | 当方法执行没有抛出异常时Fails |
@Test(timeout=100) | 当方法执行超过100毫秒Fails |
注意:jUnit认为测试按随便顺序进行,因此测试方式之间不应相互依赖。
junit以Assert类提供的静态方法(方法名以asserts)作测试.
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) | 两变量指向不同对象. |
JUnit使用静态方法,Eclipse不是总能自动地静态导入(static import).
解决办法:Open the Preferences via Window → Preferences and select Java → Editor→Content Assist→Favorites→New Type→add "org.junit.Assert"
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 {
- }