JUnit4学习笔记(二)(尚学堂)

测试人员测的是系统开发完后,功能和性能能不能满足要求,而不是测某个具体的方法。

assertEquals方法中第一个参数是自己期望的值。

Keeps the bar green to keep the code clean.

对于没有返回值的方法,只要测试操作的结果对不对就行了,没有必要非得用返回值。

assertTrue("z too small", z > 10);第一个参数表示当这个assert语句失败后显示的提示信息。

assertThat(T actual, org.hamcrest.Matcher<T> matcher)可以替换所有的assert语句。

assertThat(0, is(1)); assertThat(0, is(not(1)));优点:更符合英语语法。

这些表达式来源于hamcrest包。如hamcrest-1.2.zip。加两个jar包:hamcrest-core-1.2.jarhamcrest-library-1.2.jar。再用import static org.hamcrest.Matchers.*;导入。

这时候如果用的是eclipse自带的JUnit包就会报异常:java.lang.SecurityException

解决方法:把eclipse自带的JUnit包删掉,自己加最新的。

assertThat示例:

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 ) ); 断言d3的误差是不是不超过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" ) );

Failure是指测试失败,assert断言失败。Error是指测试程序本身出错,只有在没有Error的情况下才能谈有没有Failure

只要某个方法前加了@Test注解,就说明这个方法是测试方法,运行JUnit的时候就会自动运行。

@Test(expected=java.lang.ArithmeticException.class)表示下面的测试方法是否会抛出ArithmeticException异常,若抛出,则测试通过,否则失败。

@Test(timeout=100)表示下面的测试方法是否会在100毫秒内结束。如果在100毫秒内没有结束,则认为失败,否则认为成功。一般用于测试方法的执行效率。

@Ignore: 被忽略的测试方法,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”)

在任何一个测试执行之前必须执行的代码就是一个Fixture,我们用@Before来标注它,

@Before: 每一个测试方法之前运行,可以有多个

@After: 每一个测试方法之后运行,可以有多个

@Before按照父类到子类的顺序调用,@After则相反,这样保证了资源的正确获取和释放。

@BeforeClass: 所有测试开始之前运行,必须是static,因为是在测试类初始化之前运行。如建立数据库连接。可以有多个

@AfterClass: 所有测试结束之后运行,必须是static,如关闭数据库连接。可以有多个

@BeforeClass一般用在需要在测试之前取得很耗费时间的资源或者搭载一些比较复杂的环境的时候,如装载Spring配置文件,打开一些大文件并读入内容。@AfterClass一般用于释放资源或者卸载环境。

所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。

所有标识为@After 的方法都一定会被执行,即使在标识为@Before 或者 @Test 的方法抛出异常的的情况下也一样会。

@BeforeClass  @AfterClass 对于那些比较昂贵的资源的分配或者释放来说是很有效的,因为他们只会在类中被执行一次。相比之下对于那些需要在每次运行之前都要初始化或者在运行之后 都需要被清理的资源来说使用@Before@After同样是一个比较明智的选择。

运行多个测试类:

右键某个包名或者项目名——Run As——Run Configurations,选择Run all tests in the selected project, package or source folder.

其他测试框架,如TestNG

Ant用好了项目能够自动地编译,自动地部署,自动地测试,自动化地集成。

怎么快速接手原有项目:先运行系统,再顺着线读源代码,不要顺着面读。

对于数据量很大的系统,就是效率要求很高的,一般只用数据库集群,mysql分流和jdbc

工作经验主要看在业务上(项目上)是否熟悉,多了解一些业务(非技术)上的东西,多想想怎么实现它们,这样业务水平就会不知不觉地提高了。。。。。



http://blog.sina.com.cn/s/blog_5fcb1a810100rmvh.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值