Dart API ReferenceunittestConfiguration

Configuration Class

Hooks to configure the unittest library for different platforms. This class implements the API in a platform-independent way. Tests that want to take advantage of the platform can create a subclass and override methods from this class.

Methods

Code get autoStart() #

If true, then tests are started automatically (otherwise runTests must be called explicitly after the tests are set up.

get autoStart() => true;

Code void log(String message) #

Can be called by tests to log status. Tests should use this instead of print. Subclasses should not override this; they should instead override logMessage which is passed the test case.

void log(String message) {
  if (currentTestCase == null || _currentTest >= _tests.length ||
      currentTestCase.id != _tests[_currentTest].id) {
    // Before or after tests run, or with a mismatch between what the
    // config and the test harness think is the current test. In this
    // case we pass null for the test case reference and let the config
    // decide what to do with this.
    logMessage(null, message);
  } else {
    logMessage(currentTestCase, message);
  }
}

Code void logMessage(TestCase testCase, String message) #

Handles the logging of messages by a test case. The default in this base configuration is to call print();

void logMessage(TestCase testCase, String message) {
  print(message);
}

Code void onDone(int passed, int failed, int errors, List<TestCase> results, String uncaughtError) #

Called with the result of all test cases. The default implementation prints the result summary using the built-in print command. Browser tests commonly override this to reformat the output.

When uncaughtError is not null, it contains an error that occured outside of tests (e.g. setting up the test).

void onDone(int passed, int failed, int errors, List<TestCase> results,
    String uncaughtError) {
  // Print each test's result.
  for (final t in _tests) {
    print('${t.result.toUpperCase()}: ${t.description}');

    if (t.message != '') {
      print(_indent(t.message));
    }

    if (t.stackTrace != null && t.stackTrace != '') {
      print(_indent(t.stackTrace));
    }
  }

  // Show the summary.
  print('');

  var success = false;
  if (passed == 0 && failed == 0 && errors == 0) {
    print('No tests found.');
    // This is considered a failure too: if this happens you probably have a
    // bug in your unit tests, unless you are filtering.
    if (filter != null) {
      success = true;
    }
  } else if (failed == 0 && errors == 0 && uncaughtError == null) {
    print('All $passed tests passed.');
    success = true;
  } else {
    if (uncaughtError != null) {
      print('Top-level uncaught error: $uncaughtError');
    }
    print('$passed PASSED, $failed FAILED, $errors ERRORS');
  }

  // An exception is used by the test infrastructure to detect failure.
  if (!success) throw new Exception("Some tests failed.");
}

Code void onInit() #

Called as soon as the unittest framework becomes initialized. This is done even before tests are added to the test framework. It might be used to determine/debug errors that occur before the test harness starts executing.

void onInit() {}

Code void onStart() #

Called as soon as the unittest framework starts running. Used commonly to tell the vm or browser that tests are still running and the process should wait until they are done.

void onStart() {}

Code void onTestResult(TestCase testCase) #

Called when each test is completed. Useful to show intermediate progress on a test suite.

void onTestResult(TestCase testCase) {
  currentTestCase = null;
}

Code void onTestStart(TestCase testCase) #

Called when each test starts. Useful to show intermediate progress on a test suite.

void onTestStart(TestCase testCase) {
  currentTestCase = testCase;
}

Fields

Code TestCase currentTestCase #

TestCase currentTestCase = null;