2013-01-17 101 views
1

我爲我的一個Dart庫編寫了一套unittest,但是我希望能夠過濾那些只允許某些特定庫在我的連續構建過程中運行。我注意到unittest api允許這樣做,但我找不到任何示例。Dart單元測試過濾

回答

2

您可以通過創建自定義配置並使用filterTests()來篩選運行的測試。

import "package:unittest/unittest.dart"; 

class FilterTests extends Configuration { 
    get autoStart => false; // this ensures that the tests won't just run automatically 
} 

void useFilteredTests() { 
    configure(new FilterTests()); // tell configure to use our custom configuration 
    ensureInitialized(); // needed to get the plumbing to work 
} 

然後,在main(),您使用useFilterTests()然後調用filterTests()用細繩或您要運行的測試一個正則表達式。

void main() { 
    useFilteredTests(); 

    // your tests go here 

    filterTests(some_string_or_regexp); 
    runTests(); 
} 

將會運行其描述與參數filterTests()匹配的測試;其他測試不會。我使用filterTests()寫了一個blog post,你可能會覺得有用。

過濾測試是否將它們劃分爲多個庫的另一種方法,然後僅用於您想運行測試的那些庫的main()功能import()。 所以,想象包含了一些測試一個庫:

library foo_tests; 

import "package:unittest/unittest.dart"; 

void main() { 
    // some tests for foo() 
} 

以及含有其他測試另一個問題:

library bar_tests; 

import "package:unittest/unittest.dart"; 

void main() { 
    // some tests for bar() 
} 

您可以從這些庫的進口main()縫在一起的測試亞軍。在,my_tests.dart,你可以這樣做來運行所有測試:

import "package:unittest/unittest.dart"; 
import "foo_tests.dart" as foo_tests; 
import "bar_tests.dart" as bar_tests; 

void main() { 
    foo_tests.main(); 
    bar_tests.main(); 
} 

如果你想只運行foo_tests或僅bar_tests,你可以只導入一個。這將有效地創建一個過濾器。這些是進口產品的simple working example