51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1500|回复: 0
打印 上一主题 下一主题

[转贴] 如何利用 xUnit 框架对测试用例进行维护?2

[复制链接]
  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 1027 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-11-11 13:52:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    实操演示 2
      现在将子类中的方法名进行修改,使其与父类方法名不同,再运行子类:

    运行结果:
    1. 我是 @BeforeClass,我是第一步
    2.   我是 Children@BeforeClass,我是第一步
    3.   我是 @Before,用例执行前先到我这
    4.   我是 Children@Before,用例执行前先到我这
    5.   Children testDemoB
    6.   我是 Children@After, 用例执行后到我这
    7.   我是 @After, 用例执行后到我这
    8.   我是 @Before,用例执行前先到我这
    9.   我是 Children@Before,用例执行前先到我这
    10.   Children testDemoA
    11.   我是 Children@After, 用例执行后到我这
    12.   我是 @After, 用例执行后到我这
    13.   java.lang.AssertionError
    14.       at org.junit.Assert.fail(Assert.java:86)
    15.       at org.junit.Assert.assertTrue(Assert.java:41)
    16.       at org.junit.Assert.assertTrue(Assert.java:52)
    17.       ...
    18.       at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    19.       at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    20.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    21.   我是 @Before,用例执行前先到我这
    22.   我是 Children@Before,用例执行前先到我这
    23.   Children testDemoC
    24.   我是 Children@After, 用例执行后到我这
    25.   我是 @After, 用例执行后到我这
    26.   我是 @Before,用例执行前先到我这
    27.   我是 Children@Before,用例执行前先到我这
    28.   testDemoA
    29.   我是 Children@After, 用例执行后到我这
    30.   我是 @After, 用例执行后到我这
    31.   java.lang.AssertionError
    32.       at org.junit.Assert.fail(Assert.java:86)
    33.       at org.junit.Assert.assertTrue(Assert.java:41)
    34.       at org.junit.Assert.assertTrue(Assert.java:52)
    35.       ...
    36.       at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    37.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    38.   我是 @Before,用例执行前先到我这
    39.   我是 Children@Before,用例执行前先到我这
    40.   testDemoB
    41.   我是 Children@After, 用例执行后到我这
    42.   我是 @After, 用例执行后到我这
    43.   我是 @Before,用例执行前先到我这
    44.   我是 Children@Before,用例执行前先到我这
    45.   testDemoC
    46.   我是 Children@After, 用例执行后到我这
    47.   我是 @After, 用例执行后到我这
    48.   我是 Children@AfterClass,我是最后一步
    49.   我是 @AfterClass,我是最后一步
    复制代码
    2.7测试套件
      · RunWith
      · SuiteClasses
      · class
      实操演示
      新建一个子类 Junit4DemoChildren2Test,继承 Junit4DemoTest

    再建一个测试类 SuitesTest, 写上注解 @RunWith(Suite.class), 表明这是一个测试套件,是多个测试类的一个集合,一个容器;
      然后利用注解 @Suite.SuiteClasses 来设置测试类集合,设置测试类执行的顺序。


    运行结果:

    1. 我是 @Before,用例执行前先到我这
    2.   我是 Children2@Before,用例执行前先到我这
    3.   Children2 testDemoC
    4.   我是 Children2@After, 用例执行后到我这
    5.   我是 @After, 用例执行后到我这
    6.   我是 @Before,用例执行前先到我这
    7.   我是 Children2@Before,用例执行前先到我这
    8.   Children2 testDemoB
    9.   我是 Children2@After, 用例执行后到我这
    10.   我是 @After, 用例执行后到我这
    11.   我是 @Before,用例执行前先到我这
    12.   我是 Children2@Before,用例执行前先到我这
    13.   Children2 testDemoA
    14.   我是 Children2@After, 用例执行后到我这
    15.   我是 @After, 用例执行后到我这
    16.   java.lang.AssertionError
    17.       at org.junit.Assert.fail(Assert.java:86)
    18.       at org.junit.Assert.assertTrue(Assert.java:41)
    19.       ...
    20.       at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    21.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    22.   我是 @Before,用例执行前先到我这
    23.   我是 Children2@Before,用例执行前先到我这
    24.   testDemoA
    25.   我是 Children2@After, 用例执行后到我这
    26.   我是 @After, 用例执行后到我这
    27.   java.lang.AssertionError
    28.       at org.junit.Assert.fail(Assert.java:86)
    29.       at org.junit.Assert.assertTrue(Assert.java:41)
    30.       ...
    31.       at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    32.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    33.   我是 @Before,用例执行前先到我这
    34.   我是 Children2@Before,用例执行前先到我这
    35.   testDemoB
    36.   我是 Children2@After, 用例执行后到我这
    37.   我是 @After, 用例执行后到我这
    38.   我是 @Before,用例执行前先到我这
    39.   我是 Children2@Before,用例执行前先到我这
    40.   testDemoC
    41.   我是 Children2@After, 用例执行后到我这
    42.   我是 @After, 用例执行后到我这
    43.   我是 Children2@AfterClass,我是最后一步
    44.   我是 @AfterClass,我是最后一步
    45.   我是 @BeforeClass,我是第一步
    46.   我是 @Before,用例执行前先到我这
    47.   testDemoA
    48.   我是 @After, 用例执行后到我这
    49.   java.lang.AssertionError
    50.       at org.junit.Assert.fail(Assert.java:86)
    51.       at org.junit.Assert.assertTrue(Assert.java:41)
    52.       ...
    53.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    54.   我是 @Before,用例执行前先到我这
    55.   testDemoB
    56.   我是 @After, 用例执行后到我这
    57.   我是 @Before,用例执行前先到我这
    58.   testDemoC
    59.   我是 @After, 用例执行后到我这
    60.   我是 @AfterClass,我是最后一步
    61.   我是 @BeforeClass,我是第一步
    62.   我是 Children@BeforeClass,我是第一步
    63.   我是 @Before,用例执行前先到我这
    64.   我是 Children@Before,用例执行前先到我这
    65.   Children testDemoB
    66.   我是 Children@After, 用例执行后到我这
    67.   我是 @After, 用例执行后到我这
    68.   我是 @Before,用例执行前先到我这
    69.   我是 Children@Before,用例执行前先到我这
    70.   Children testDemoA
    71.   我是 Children@After, 用例执行后到我这
    72.   我是 @After, 用例执行后到我这
    73.   java.lang.AssertionError
    74.       at org.junit.Assert.fail(Assert.java:86)
    75.       at org.junit.Assert.assertTrue(Assert.java:41)
    76.       at org.junit.Assert.assertTrue(Assert.java:52)
    77.       ...
    78.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    79.   我是 @Before,用例执行前先到我这
    80.   我是 Children@Before,用例执行前先到我这
    81.   Children testDemoC
    82.   我是 Children@After, 用例执行后到我这
    83.   我是 @After, 用例执行后到我这
    84.   我是 @Before,用例执行前先到我这
    85.   我是 Children@Before,用例执行前先到我这
    86.   testDemoA
    87.   我是 Children@After, 用例执行后到我这
    88.   我是 @After, 用例执行后到我这
    89.   java.lang.AssertionError
    90.       at org.junit.Assert.fail(Assert.java:86)
    91.       at org.junit.Assert.assertTrue(Assert.java:41)
    92.       ...
    93.       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    94.   我是 @Before,用例执行前先到我这
    95.   我是 Children@Before,用例执行前先到我这
    96.   testDemoB
    97.   我是 Children@After, 用例执行后到我这
    98.   我是 @After, 用例执行后到我这
    99.   我是 @Before,用例执行前先到我这
    100.   我是 Children@Before,用例执行前先到我这
    101.   testDemoC
    102.   我是 Children@After, 用例执行后到我这
    103.   我是 @After, 用例执行后到我这
    104.   我是 Children@AfterClass,我是最后一步
    105.   我是 @AfterClass,我是最后一步
    106.   我是 @BeforeClass,我是第一步
    107.   我是 Children2@BeforeClass,我是第一步
    复制代码
    由测试结果可以看到使用套件后,测试过程为 Junit4DemoChildren2Test、Junit4DemoTest、Junit4DemoChildrenTest 的顺序执行
      2.8 分组测试-@Category
      有时候我们需要对一些特定的用例进行分组测试,这个时候就可以用@Category来实现。
      另外在套件执行类上运用注解:
    1. @RunWith(Categories.class)  :  固定写法,指明以 Category 方式分组
    2.   @Categories.IncludeCategory(SlowGroup.class) : 指明要执行的测试分组包含哪些
    3.   @Categories.ExcludeCategory(FastGroup.class) : 指明要执行的测试分组不包含哪些
    4.   @Suite.SuiteClasses({ : 指明要执行的测试类
    5.       TestDemo.class
    6.   })
    复制代码
    @Category分组需要给定一个标签,以类或者接口都可以,这里创建连个接口SlowGroup和FastGroup

    1.  public interface FastGroup {
    2.   }
    3.   public interface SlowGroup {
    4.   }
    复制代码
    在用例上分别分组为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 的顺序
      · 继承顺序
      · 套件之间的顺序

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-3 09:37 , Processed in 0.076925 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表