如何在dart的unittest中设置测试超时?

时间:2014-01-31 13:32:27

标签: dart dart-async dart-unittest

是否可以设置测试可以运行的最长时间?就像:

@Test(timeout=1000)
public void testSomething() {}

在jUnit中?

2 个答案:

答案 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))

https://pub.dartlang.org/packages/test#timeouts