2013-02-24 57 views
3

通常情況下,您需要在每次測試後進行某種清理。例如,清理數據庫。全局設置和拆卸功能

問題:

有沒有辦法使用單元測試庫時附上全球拆卸和安裝的功能呢? 它會變得更好,能夠定義around建議:

unittest.around((test){ 
    //doing setup 
    test(); 
    //doing cleanup 
}); 
+1

看起來不像。以下是Gram所說的內容:http://code.google.com/p/dart/issues/detail?id=8157提交功能請求? – 2013-02-24 06:40:07

+0

謝謝Seth。我提出了一個請求。 – 2013-02-24 20:49:14

回答

1

當然,錯誤需要先修復:-)

然後,你會這樣做,因爲賈斯汀說'使用非明確的函數,你可以明確上調。在我看來,這是提供最大靈活性的最佳方式,而不會讓單元測試庫受到大量複雜的設置/拆卸邏輯的阻礙。

如果你想要做的測試套件安裝/拆卸,你能做到這與組中的初始/最終的「試驗」:

group('test suite',() { 
    test('Set up suite',() { ... }); 
    test('Test 1',() { ... }); 
    ... 
    test('Test n',() { ... }); 
    test('Tear down suite',() { ... }); 
}); 

這並不理想,但它是一個解決方案。

值得指出的是,在內部,組實際上並未表示爲層次結構。我們所做的只是使用當前的setUp/tearDown函數來保存堆棧,以便我們可以將每個測試用例與適當的測試用例關聯起來,並將組名和測試名稱連接起來以形成測試用例的最終名稱。我們並沒有構建樹型數據結構,因此我們沒有一種隱式進行upcalls的好方法(我們可以快速創建閉合層,並將這些閉合層用作實際的setUp/tearDown函數,但這有點兒的fugly)。

1

你可以做手工,革蘭氏在錯誤暗示:

main() { 
    topSetup() { 
    // ... 
    } 
    setUp(topSetup); 

    group('group',() { 
    setUp(() { 
     topSetup(); 
     // ... 
    }); 

    test('test',() { 
     // ... 
    }); 
    }); 
}