我为我的一个 Dart 库编写了一组单元测试,但是我希望能够过滤它们以仅允许某些在我的连续构建期间运行。我注意到 unittest api 允许这样做,但我找不到任何示例。
问问题
73 次
1 回答
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()
,你可能会觉得有用。
另一种过滤测试的方法是将它们划分为多个库,然后仅使用您要运行其测试的那些库的功能import()
。main()
所以,想象一个包含一些测试的库:
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();
}
如果你想运行 onlyfoo_tests
或 only bar_tests
,你可以只导入一个。这将有效地创建一个过滤器。这是这些导入如何工作的简单工作示例
于 2013-01-18T01:49:01.923 回答