本文共 5233 字,大约阅读时间需要 17 分钟。
注:一般不使用 MyEclipse 自带的JUnit的方法 JUnit 提供了一些辅助函数,用于帮助你确定某个被测试函数是否工作正常。通常而言,把所有这些函数统称为断言。断言是单元测试最基本的组成部分。 1> assertEquals([String message], expected,actual): 比较两个基本类型或对象是否相等( expected 和 actual 是原始类型数值 (primitive value) 或者必须为实现比较而具有 equal 方法) 2> assertFalse([String message],boolean condition): 对布尔值求值,看它是否为 “ 真 “ 3> assertTrue([String message],boolean condition): 对布尔值求值,看它是否为 “ 假 “ 4> assertNull([String message],java.lang.Object object): 检查对象是否为 “ 空 “ 5> assertNotNull([String message],java.lang.Object object): 检查对象是否不为 “ 空 ” 6> assertSame([String message],expected,actual): 检查两个对象是否为同一实例 7> assertNotSame([String message],expected,actual): 检查两个对象是否不为同一实例 8> fail( String message ): 使测试立即失败,其中 message 参数使可选的。这种断言通常被用于标记某个不应该到达的分支(例如,在一个预期发生的异常之后) JUnit和异常 2 > 由于某个模块(或代码)发生严重错误,而抛出的不可预测异常 任何对 assertTrue(true) 的使用都应该被翻译为“我预期控制流程会达到这个地方”。通常而言,对于方法中每个被期望的异常,你都应该写一个专门的测试来确认该方法在应该抛出异常的时候确实会抛出异常。如上例中 testEmpty() 测试方法的设计。 对于处于出乎意料的异常,你最好简单的改变你的测试方法的声明让它能抛出可能的异常。 JUnit 框架可以捕获任何异常,并且把它报告为一个错误,这些都不需要你的参与。 import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; import org.junit.AfterClass; import org.junit.BeforeClass; import com.chenshun.unit.T; * 每一个测试函数运行前 都回执行@Before对应的函数 * 每一个测试函数运行后 都回执行@After对应的函数 * 你要在方法的前面使用@Test标注,以表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取 * ,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。 * 至于方法内该写些什么,那就要看你需要测试些什么了 public static void beforeclass(){ System.out.println("BeforeClass"); public static void afterclass(){ System.out.println("AfterClass"); System.out.println("before"); System.out.println("after"); int z = new T().add(1 , 2); System.out.println("z = " + z); assertEquals(z , 3);//判断是否相等 assertThat(z , is(3));//判断是否相等 assertThat(z , allOf(greaterThan(2), lessThan(4)));//判断在不在指定范围里 // timeout:测试方法最大执行时间(毫秒) @Test(expected=java.lang.ArithmeticException.class, timeout= 100) public void testDivide(){ int z = new T().divide(8, 0); public int add(int x, int y){ public int divide(int x,int y){ import org.junit.AfterClass; import org.junit.BeforeClass; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import chenshun.model.ProCategory; import chenshun.service.ProCategoryI; *每一个测试函数运行前 都回执行@Before对应的函数 *每一个测试函数运行后 都回执行@After对应的函数 *你要在方法的前面使用@Test标注,以表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取 *,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。 *至于方法内该写些什么,那就要看你需要测试些什么了 public class TestMyBatis { public static void beforeclass(){ System.out.println("BeforeClass"); public static void afterclass(){ System.out.println("AfterClass"); System.out.println("before"); System.out.println("after"); ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml","spring-mybatis.xml"}); ProCategoryI procategoryservice = (ProCategoryI) ac.getBean("ProCategoryService"); ProCategory p = procategoryservice.getProCategoryById(1); import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml", "classpath:spring-hibernate.xml" })
public class TestHibenate {
public static void beforeclass() {
System.out.println("BeforeClass");
public static void afterclass() {
System.out.println("AfterClass");
System.out.println("before");
System.out.println("after");
private UserServiceI userService;
tUser user = new tUser();
user.setId(UUID.randomUUID().toString());
user.setCreatedatetime(new Date());
user.setModifydatetime(new Date());
public UserServiceI getUserService() {
public void setUserService(UserServiceI userService) {
this.userService = userService;
转载地址:http://jngab.baihongyu.com/