junit4整理
junit 快速入门
简介
unit是xUnit的一个子集,在c++,paython,java语言中测试框架的名字都不相同<br>
<br>
断言机制:将程序预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性<br>
hamcrest-core设置匹配集规则的框架,可用来增强junit的功能
JUnit3:必须继承junit.framework.TestCase这个类,在方法前面必须加上test最为前缀
JUnit4:只要加上@Test注解即可,不需要继承任何类,命名没有限制
2.junit 使用详解
- 导入jar(右键Build Path --> Add Libraries -->
Junit --> Junit4)
2.新建测试类:右键需测试类所在包new --> JUnit Test Case参照自动生成的测试类模板(可删除),写自己的测试方法
3.运行测试:测试文件右键 --> Run as JUnit Test
4.Junit视图:
状态条(绿色——测试成功;红色——测试失败)
方法或类的列表
assertEquals(xxx,xxx),断言。第一个参数是预期值。第二个参数是程序运行的值
2要求规范
1、
测试方法前面必须有@test修饰<br>
2、测试方法名前面为public
void,且不带参数,如public void atest(){}<br>
3、最好测试代码单独存放一个文件夹<br>
4、测试类的包和被测试类的包需保持一致<br>
5、测试单元中的每个方法必须独立测试,测试方法间无依赖。<br>
6、测试类名为 XxxTEst,测试方法名为testXxx
3.错误
当测试结果不是绿色的时候。failure一般是单元测试使用的断言方法判断失败引起的,表明测试点发现了问题,即输出和预期不一样。error则是代码异常,比如测试代码本身错了,或者被测试代码中有bug。
这种测试只能证明你的逻辑实现没错,不代表你的逻辑是对的。
3.junit的深入使用
1.测试流程
beforeClass
before
test1
after
before
test2
after
afterClass
1、@BeforClass在所有方法调用前执行,属于静态方法,在测试类被加载之后就会运行,只存在一份实例,即只在最开始运行一次,适合用来加载配置文件。
2、@AfterClass在所有方法执行完才执行一次,适合用来做对资源的清理,内存的释放之类。
3、@Before和@After在每个测试方法前/后执行一次。
2.常用注解
@Test(expected=ArithmeticException.class){...}预料的结果为报错。
@Test(expected=XX.class)
@Test(timeout=xx(毫秒))无限运行时可强制退出,亦可作性能测试的标准。
@Ignore 忽略此方法
@Runwith 更改测试运行器
3.测试套件
1.测试套件就是组织测试类一起运行的
2.写一个作为测试套件的入口类,这个类里不包含其他的方法。
3.更改测试运行器Suite.class.
4.将要测试的类作为数组传入到Suite.SuiteClasses({})
4.参数
1.更改默认的测试运行器为RunWith(Parameterized.class)
2.声明变量存放预期值和结果值
3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰
例如:
public static Collection<Object[]>t(){
return Arrays.asList(new
Object[][]{{3,2,1}{4,2,2}});
}
4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值(预期值、输入参数值等)
Spring与Hibernate的整合测试
1,添加spring,hibernate,MySQL等jar包
2,添加spring配置文件,hibernate配置文件
3,@BeforeClass获得spring的配置文件ClassPathXmlApplicationContext("配置文件")
4,测试通过getBean获得spring管理的bean是否成功。
测试总结
了解一个东西基本是这样的
1:有什么——知道有这么个东西
2:是什么——知道这个东西什么东东
3:做什么——知道这个东西能做什么事情
5:怎么做——知道这个东西怎么用
6:为什么——知道这个东西怎么设计,为什么是这个东西
7:下一个——清楚的了解一个东西后,要么再深入,要么换一个研究的对象,一个是纵向探索,一个是横向扩展,听视屏的讲解基本上能到大第5层,如果想更上一层楼第6、7层是必须要走的,这一层,就需要自己独自的探索了,去哪里哪?去官网?去和这个东西的创造者、发扬者去沟通和交流?去大自然中?去自己的想像之中?