测试人员测的是系统开发完后,功能和性能能不能满足要求,而不是测某个具体的方法。
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.jar,hamcrest-library-1.2.jar。再用import static org.hamcrest.Matchers.*;导入。
这时候如果用的是eclipse自带的JUnit包就会报异常:java.lang.SecurityException。
解决方法:把eclipse自带的JUnit包删掉,自己加最新的。
assertThat示例:
a)
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );
b)
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpac
c)
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );
d)
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
@BeforeClass
运行多个测试类:
右键某个包名或者项目名——Run As——Run Configurations,选择Run all tests in the selected project, package or source folder.
其他测试框架,如TestNG。
Ant用好了项目能够自动地编译,自动地部署,自动地测试,自动化地集成。
怎么快速接手原有项目:先运行系统,再顺着线读源代码,不要顺着面读。
对于数据量很大的系统,就是效率要求很高的,一般只用数据库集群,mysql分流和jdbc。
工作经验主要看在业务上(项目上)是否熟悉,多了解一些业务(非技术)上的东西,多想想怎么实现它们,这样业务水平就会不知不觉地提高了。。。。。