当前位置: 首页 > 知识库问答 >
问题:

使用TestNG(或任何其他框架)在测试方法级别定义共享或新夹具

微生博简
2023-03-14

我想做的是

  1. 定义对测试方法的依赖关系(TestNG)
  2. 定义在测试方法运行之前是否共享(未重置)或重新创建测试夹具的每个测试方法

请参见以下示例:

>

  • test1将首先运行
  • 如果test1成功,则运行test2并使用与test1插入的相同数据
  • 如果test2成功,则运行test3并使用test1和test2中的日期
  • 如果test3成功,则test4运行,但test4以干净状态启动,它不会共享相同的夹具

    public class SomeTestClass extends Insertable {
    @BeforeSuite
    public void background() {
        insert(0);
    }
    
    @Test()
    public void test1() {
    
        // when
        insert(1);
    
        // then
        assertThatIsContained(0);
        assertThatIsContained(1);
    }
    
    @Test(dependsOnMethods = {"test1"})
    @SharedFixture
    public void test2() {
        // when
        insert(2);
    
        // then
        assertThatIsContained(0);
        assertThatIsContained(1);
        assertThatIsContained(2);
    }
    
    @Test(dependsOnMethods = {"test2"})
    @SharedFixture
    public void test3() {
        // when
        insert(3);
    
        // then
        assertThatIsContained(0);
        assertThatIsContained(1);
        assertThatIsContained(2);
        assertThatIsContained(3);
    }
    
    @Test(dependsOnMethods = {"test2"})
    @FreshFixture
    public void test4() {
        // given
        insert(99);
    
        // when
        insert(4);
    
        // then
        assertThatIsNotContained(1);
        assertThatIsNotContained(2);
        assertThatIsNotContained(3);
        assertThatIsContained(0);
        assertThatIsContained(99);
        assertThatIsContained(4);
    }
    

    }

  • 共有1个答案

    闾丘玮
    2023-03-14

    您可以将测试拆分为两组(通过在@Test注释中指定属性)并使用@BeforeGroup注释您的初始化方法以使其每个组仅运行一次。

    要使您的组按特定顺序执行,请在测试注释中使用依赖组。

    实现这一点的更直接的方法是将方法分为两个类(例如,Test1和Test2),并在可插入的超类中定义一个带注释的方法,在每个类中的测试方法得到已执行。

     类似资料:
    • 下面是我写的JUNIT测试,用来比较从Json字符串创建的对象(实际)和在测试函数中创建的对象(预期)。 但是当我执行assertEquals()时,它没有通过测试。原因可能是什么? 我的销售渠道课程是:

    • 本文向大家介绍特定测试方法的执行如何依赖于TestNG中的其他测试方法?,包括了特定测试方法的执行如何依赖于TestNG中的其他测试方法?的使用技巧和注意事项,需要的朋友参考一下 可以在dependsOnMethods helper属性的帮助下,使特定测试方法的执行依赖于另一个测试方法。 示例 在Java类文件中,只有在该方法成功运行后,才会执行verifyLoan()方法。但是方法独立运行,而无

    • 问题内容: 您如何使用JavaScript(特别是jQuery)进行自动刷新? 我知道这种方法,但这真的是一个好习惯吗?有没有更好的方法? 问题答案: 另一个修改: 与此不同的是,ajax调用为1之后,它将等待10秒。因此,刷新之间的时间间隔实际上是10秒+ ajax调用的长度。这样做的好处是,如果您的服务器花费的时间超过10秒,则不会同时发生两个(最终很多)同时的AJAX调用。 另外,如果服务器

    • 我有这些具体要求: 需要能够登录致命级别 现在,我的实现如下: 这是我的模式布局(在yaml): 以下是我的日志输出: 你知道如何有效地从日志输出中删除“错误”吗? 非常感谢你

    • 一切都很完美,但在发送文件时,我认为,它不存在。。。在空白处出现了字符串变量song,其中包含文件名。例如:呼叫是:共享(“abc”);我想发送mp3文件(在原始文件夹中)abc。mp3