是否可以设置测试可以运行的最长时间?就像:
@Test(timeout=1000)
public void testSomething() {}
在jUnit中?
答案 0 :(得分:4)
尝试在测试的main()
中添加以下行
void main(List<String> args) {
useHtmlEnhancedConfiguration(); // (or some other configuration setting)
unittestConfiguration.timeout = new Duration(seconds: 3); // <<== add this line
test(() {
// do some tests
});
}
您可以使用setUp()
和tearDown()
以及Timer
library x;
import 'dart:async';
import 'package:unittest/unittest.dart';
void main(List<String> args) {
group("some group", () {
Timer timeout;
setUp(() {
// fail the test after Duration
timeout = new Timer(new Duration(seconds: 1), () => fail("timed out"));
});
tearDown(() {
// if the test already ended, cancel the timeout
timeout.cancel();
});
test("some very slow test", () {
var callback = expectAsync0((){});
new Timer(new Duration(milliseconds: 1500), () {
expect(true, equals(true));
callback();
});
});
test("another very slow test", () {
var callback = expectAsync0((){});
new Timer(new Duration(milliseconds: 1500), () {
expect(true, equals(true));
callback();
});
});
test("a fast test", () {
var callback = expectAsync0((){});
new Timer(new Duration(milliseconds: 500), () {
expect(true, equals(true));
callback();
});
});
});
}
这会使整个组失败,但是组可以嵌套,因此您可以完全控制应该监视哪些测试超时。
答案 1 :(得分:0)
是的,您现在可以将这段代码放在import语句上方,以确定您的测试超时时间。
@Timeout(const Duration(seconds: 45))