TA的每日心情 | 无聊 3 天前 |
---|
签到天数: 1050 天 连续签到: 1 天 [LV.10]测试总司令
|
实操演示 2
现在将子类中的方法名进行修改,使其与父类方法名不同,再运行子类:
运行结果:
- 我是 @BeforeClass,我是第一步
- 我是 Children@BeforeClass,我是第一步
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoB
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoA
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- at org.junit.Assert.assertTrue(Assert.java:52)
- ...
- at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
- at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoC
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoA
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- at org.junit.Assert.assertTrue(Assert.java:52)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoB
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoC
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 Children@AfterClass,我是最后一步
- 我是 @AfterClass,我是最后一步
复制代码 2.7测试套件
· RunWith
· SuiteClasses
· class
实操演示
新建一个子类 Junit4DemoChildren2Test,继承 Junit4DemoTest
再建一个测试类 SuitesTest, 写上注解 @RunWith(Suite.class), 表明这是一个测试套件,是多个测试类的一个集合,一个容器;
然后利用注解 @Suite.SuiteClasses 来设置测试类集合,设置测试类执行的顺序。
运行结果:
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- Children2 testDemoC
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- Children2 testDemoB
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- Children2 testDemoA
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- testDemoA
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- testDemoB
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children2@Before,用例执行前先到我这
- testDemoC
- 我是 Children2@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 Children2@AfterClass,我是最后一步
- 我是 @AfterClass,我是最后一步
- 我是 @BeforeClass,我是第一步
- 我是 @Before,用例执行前先到我这
- testDemoA
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- testDemoB
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- testDemoC
- 我是 @After, 用例执行后到我这
- 我是 @AfterClass,我是最后一步
- 我是 @BeforeClass,我是第一步
- 我是 Children@BeforeClass,我是第一步
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoB
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoA
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- at org.junit.Assert.assertTrue(Assert.java:52)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- Children testDemoC
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoA
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- java.lang.AssertionError
- at org.junit.Assert.fail(Assert.java:86)
- at org.junit.Assert.assertTrue(Assert.java:41)
- ...
- at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoB
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 @Before,用例执行前先到我这
- 我是 Children@Before,用例执行前先到我这
- testDemoC
- 我是 Children@After, 用例执行后到我这
- 我是 @After, 用例执行后到我这
- 我是 Children@AfterClass,我是最后一步
- 我是 @AfterClass,我是最后一步
- 我是 @BeforeClass,我是第一步
- 我是 Children2@BeforeClass,我是第一步
复制代码 由测试结果可以看到使用套件后,测试过程为 Junit4DemoChildren2Test、Junit4DemoTest、Junit4DemoChildrenTest 的顺序执行
2.8 分组测试-@Category
有时候我们需要对一些特定的用例进行分组测试,这个时候就可以用@Category来实现。
另外在套件执行类上运用注解:
- @RunWith(Categories.class) : 固定写法,指明以 Category 方式分组
- @Categories.IncludeCategory(SlowGroup.class) : 指明要执行的测试分组包含哪些
- @Categories.ExcludeCategory(FastGroup.class) : 指明要执行的测试分组不包含哪些
- @Suite.SuiteClasses({ : 指明要执行的测试类
- TestDemo.class
- })
复制代码 @Category分组需要给定一个标签,以类或者接口都可以,这里创建连个接口SlowGroup和FastGroup
- public interface FastGroup {
- }
- public interface SlowGroup {
- }
复制代码 在用例上分别分组为SlowGroup、FastGroup和SlowGroup+FastGroup
指明SlowGroup组测试执行,FastGroup组的测试不执行:
测试结果:
仅指明SlowGroup组测试执行。
测试结果:
仅指明不执行的组为FastGroup。
测试结果:
2.9 参数化 @Paramterized
有时候我们需要传入测试数据,且数据可能是多组,这个时候就需要使用参数化来传入多组数据进行测试
Junit4 的参数化稍微有点麻烦:
1)先在类名上加入注解@RunWith(Parameterized.class)表明要以参数化运行。
2)用注解@Parameterized.Parameters来设定数据源。
3)最后用注解 @Parameterized.Parameter 来指定数据源数据对应的参数。
4)总览
测试结果:
从测试结果可以看到 3 组参数分别传入方法中,方法各执行了一次,完成参数化测试。
3、总结-测试用例的顺序
· 测试用例之间的顺序
· test fixtures 的顺序
· 继承顺序
· 套件之间的顺序
|
|