2012-09-17 28 views
3

有沒有什麼辦法可以在我的TestNG註解中使用dependsOnMethods對於groovy編寫的測試呢?TestNG Groovy 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中,而在常規運行這只是不支持此類型的註解給我下面的錯誤

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

回答

0

Test方法有包的範圍。

顯式聲明public爲:

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

它將使一個很大的意義,如果這是Java的,但它不是,因爲在[從Java的差異(如http://groovy.codehaus.org/Differences+from+Java陳述)默認情況下,Groovy使方法和類成爲公共方法。 換句話說'void shouldHaveWarehouse(){/ * ... * /}'和'public void shouldHaveWarehouse(){/ * ... * /}'完全一樣,只是更簡潔一些。 –

0

注意:這不是(完全)回答海事組織,但它更多的解決辦法的。只需將其添加到此處,以防有人可以改進此答案並提供更多見解。

面對同樣的問題,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']) 
    } 
}