【问题标题】:TestNG Groovy dependsOnMethodsTestNG Groovy 依赖方法
【发布时间】:2012-09-17 15:13:38
【问题描述】:

有什么方法可以在我的 TestNG 注释中使用 dependsOnMethods 来进行用 groovy 编写的测试吗?

class WarehouseBehavior {
    @Test
    void shouldHaveWarehouse() {
        def warehouse = registry.getService Warehouse.class
        assertNotNull warehouse
    }
    @Test(dependsOnMethods = ['shouldHaveWarehouse'])
    void shouldStoreDataInWarehouse() {
        def warehouse = registry.getService Warehouse.class
        warehouse.store(['a': 'b', 'c': 'd'])
    }
}

我要么在这里遗漏了一些东西,要么 groovy 只是不支持这种类型的注释,因为类似的代码在 Java 中运行良好,而在 groovy 中运行它会给我以下错误

WarehouseBehavior.shouldStoreDataInWarehouse() is depending on method public void WarehouseBehavior.shouldHaveWarehouse(), which is not annotated with @Test

【问题讨论】:

    标签: groovy annotations testng


    【解决方案1】:

    Test 方法具有包范围。

    将public 明确声明为:

    @Test
    public void shouldHaveWarehouse() {
        // .....
    }
    

    【讨论】:

    • 如果这是 Java 会很有意义,但它不是因为 Differences from Java 中所述,Groovy 默认公开方法和类。换句话说,void shouldHaveWarehouse() { /* ... */ } 与 public void shouldHaveWarehouse() { /* ... */ } 完全相同,只是更简洁一点。
    【解决方案2】:

    注意:这不是(完整的)IMO 答案,但更多的是解决方法。只需在此处添加它,以防有人可以改进此答案并提供更多见解。

    面对与 Groovy 测试相同的问题,到目前为止我能找到的唯一解决方法是将这两种方法放在同一个组中,然后它就可以工作。所以像这样的

    class WarehouseBehavior {
        @Test(groups =['somegroup'])
        void shouldHaveWarehouse() {
            def warehouse = registry.getService Warehouse.class
            assertNotNull warehouse
        }
        @Test(groups =['somegroup'], dependsOnMethods = ['shouldHaveWarehouse'])
        void shouldStoreDataInWarehouse() {
            def warehouse = registry.getService Warehouse.class
            warehouse.store(['a': 'b', 'c': 'd'])
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 2021-10-25
      • 2019-01-30
      • 2011-02-06
      • 2020-12-01
      相关资源
      最近更新 更多