7

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

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

在 jUnit 中?

4

2 回答 2

7

是的,您现在可以将这行代码放在导入语句上方以确定您的测试超时时间。

@Timeout(const Duration(seconds: 45))

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

于 2018-08-12T15:55:09.750 回答
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()您可以使用andtearDown()和 a轻松设置时间守卫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();
      });
    });

  });
}

这会使整个组失败,但组可以嵌套,因此您可以完全控制应该监视哪些测试超时。

于 2014-01-31T13:44:57.930 回答