TestNG Groovy dependson方法

TestNG Groovy dependson方法,groovy,annotations,testng,Groovy,Annotations,Testng,对于用groovy编写的测试,有没有办法在我的TestNG注释中使用dependsOnMethods class WarehouseBehavior { @Test void shouldHaveWarehouse() { def warehouse = registry.getService Warehouse.class assertNotNull warehouse } @Test(dependsOnMethods = ['s

对于用groovy编写的测试,有没有办法在我的TestNG注释中使用dependsOnMethods

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

Test
方法具有包范围

明确声明
public
为:

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

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

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'])
    }
}

如果这是Java的话,这会很有意义,但事实并非如此,因为正如Groovy中所述,默认情况下方法和类是公共的。换句话说,
void shoulldhavewarehouse(){/*…*/}
public void shoulldhavewarehouse(){/*…*/}
完全相同,只是更简洁了一点。