long316 发表于 2013-1-26 12:58:50

Junit4

1.assertThat
2.使用hamcrest的匹配方法
a)更自然
3.示例
a)assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );

b)assertThat( str, containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );

c)assertThat( d, closeTo( 3.0, 0.3 ) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );

d)assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );


JUnit4 Annotation
1.@Test: 测试方法
a)(expected=XXException.class)
b)(timeout=xxx)
2.@Ignore: 被忽略的测试方法
3.@Before: 每一个测试方法之前运行
4.@After: 每一个测试方法之后运行
5.@BeforeClass: 所有测试开始之前运行
6.@AfterClass: 所有测试结束之后运行

1.遵守约定,比如:
a)类放在test包中
b)类名用XXXTest结尾
c)方法用testMethod命名


测试实例
package com.bjsxt.junit4.test;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;


import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.Ignore;
import org.junit.Test;

import com.bjsxt.junit4.T;

public class TTest {
@BeforeClass
public static void beforeClass() {
System.out.println("beforeClass");
}

@AfterClass
public static void afterClass() {
System.out.println("afterClass");
}

@Before
public void before() {
System.out.println("before");
}

@Test
public void testAdd() {
int z = new T().add(5, 3);
assertThat(z, is(8));
assertThat(z ,allOf(greaterThan(5), lessThan(10)));
//int a = 8/0;
}


@Test(expected=java.lang.ArithmeticException.class, timeout=100)
public void testDivide() {
int z = new T().divide(8, 0);

}

@After
public void after() {
System.out.println("after");
}

}


package com.bjsxt.junit4.test;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

import org.junit.Test;

import com.bjsxt.junit4.User;

public class UserTest {

@Test
public void testGetName() {
assertThat(new User().getName(), is("宋慧乔"));
}

}


package com.bjsxt.junit4;

public class T {
public int add(int x, int y) {
return x + y;
}

public int divide(int x, int y) {
return x/y;
}

public static void main(String[] args) {
int z = new T().add(3, 5);
System.out.println(z);
}
}


package com.bjsxt.junit4;

public class User {
public String getName() {
return "宋慧乔";
}
}
页: [1]
查看完整版本: Junit4