Подтвердить что ты не робот

Как написать несколько unittests в дротике в нескольких файлах?

Я пишу какую-то библиотеку Дарта и хочу, чтобы она была unittested. Я создал каталог test и хочу поставить здесь свои тесты. Поскольку у меня будет много тестов, я хочу, чтобы они были разделены на несколько файлов. Мои вопросы касаются того, что такое конвенция Дарт, как это сделать. Я хочу, чтобы мои тесты легко запускали все, однако я также хочу иметь возможность запускать только один файл тестов.

Каковы ваши предложения?

4b9b3361

Ответ 1

Обычно разделить тесты на несколько файлов. Я включаю пример того, как вы можете это сделать.

Представьте, что у вас есть 2 файла с тестами, foo_test.dart, bar_test.dart, которые содержат тесты для вашей программы. foo_test.dart может выглядеть примерно так:

library foo_test;

import 'package:unittest/unittest.dart';

void main() {
  test('foo test', () {
    expect("foo".length, equals(3));
  });
}

И bar_test.dart может выглядеть примерно так:

library bar_test;

import 'package:unittest/unittest.dart';

void main() {
  test('bar test', () {
    expect("bar".length, equals(3));
  });
}

Вы можете запустить любой файл, и тест, содержащийся в этом файле, будет выполняться.

Я создам нечто вроде файла all_tests.dart, который будет импортировать тесты из foo_test.dart и bar_test.dart. Вот как выглядит all_tests.dart:

import 'foo_test.dart' as foo_test;
import 'bar_test.dart' as bar_test;

void main() {
  foo_test.main();
  bar_test.main();
}

Если вы выполнили all_tests.dart, будут выполняться оба теста из foo_test.dart и bar_test.dart.

Одно замечание: для всего этого вам нужно объявить foo_test.dart и bar_test.dart как библиотеки (см. первую строку каждого файла). Затем в файле all_tests.dart вы можете использовать синтаксис импорта для извлечения содержимого объявленных библиотек.

Вот как я организую большинство моих тестов.

Ответ 2

Не нужно иметь несколько файлов для изоляции теста - см. Выполнение только одного теста и Запуск ограниченного набора тестов.

Чтобы изолировать тест, измените test() на solo_test().

Таким образом, вы можете поместить все ваши тесты в один и тот же файл (или на несколько частей).

Ответ 3

Есть инструмент, который делает именно это, Dart Test Runner. Выдержка из этой страницы:

Dart Test Runner автоматически обнаружит и выполнит все тесты в проекте Dart в правильной среде (VM или Browser).

Он обнаруживает любой тестовый файл в файле, помеченном _test.dart, где ваш тестовый код находится внутри функции main(). У него нет проблем с обнаружением и запуском unittest.

Это довольно легко установить и запустить. Всего две команды:

$ pub global activate test_runner
$ pub global run test_runner

Для получения дополнительных параметров, пожалуйста, проверьте страницу Dart Test Runner.

Ответ 4

В случае, если это может быть полезно для кого-либо при одновременном запуске нескольких тестов,

Я писал тесты, но мои тестовые файлы names не заканчивались на *_test.dart Поэтому я не смог запустить все тесты сразу.

Если вы хотите запустить все тесты одновременно, обязательно завершите файл dart с помощью _test.dart.