eclipse可以通过build path引入junit包
- 工程中引入junit
- 随便写一个类(计算加减乘除)

- 使用junit对类进行单元测试
右键需要单元测试的java文件,new,选择junit test case


下一步,选择要测试的方法

完成,系统会自动生成一个junit测试文件

看一下该类引用的内容,以后可以自己创建测试类

里面包含空的测试方法,需要自己去写用例

执行run as的junit Test
会出现测试结果

控制台输出

测试了四个方法,setup触发了四次。
结果只有第一个方法通过。理论上每个方法若是单独测试第二个方法也会通过。应该是实例只有一个,而result一直有缓存值的问题。
测试方法之间对待测试类的改变并不是独立的隔离状态
setUp在调用每个方法之前都会触发一次,应该是在测试方法前对类进行一些统一初始化用。
修改测试类,将待测试类实例化放置setup方法内试试。

失败

猜测:难道只能保持一个活跃实例,先在待测试类增加一个重置变量result的方法,使得在测试方法前初始统一。

然后setup方法调用

结果测试正确

multiply是个未完成方法怎么办?
不对方法进行测试,或者使用@ignore标签


结果

- 使用
首先测试类要引入org.junit.的内容,而使用到的assertEquals是 static org.junit.Assert.的内容。这两个内容要引入。
@Before标签就是在每个测试方法运行前,都会调用的方法
@Test标签就是需要测试的方法,可传入timeout=10000参数设置方法执行限制时间,如果测试异常触发情况,可传入expected = ArithmeticException. class ->触发异常类,测试是否触发异常
使用assertEquals传入理想结果和实际结果对该测试方法的运行目的进行判断是否正确
@After标签 在执行完测试方法后会触发的方法
@BeforeClass 在加载测试类时触发方法,static
@AfterClass 在结束测试类时触发方法,static
类标签@Runwith为测试类指定特殊的Runner,一个类只能用一个runner
例如:
同一个方法,测试不同的边界参数,可使用@RunWith(Parameterized. class )

如果有多个测试类,想一起执行测试,可以使用@RunWith(Suite. class)
且一起使用标签@SuiteClasses进行管理本次执行测试的类有哪些

测试结果

网友评论