Каков наилучший способ написания юнит-тестов в Dart? - PullRequest
16 голосов
/ 08 декабря 2011

Дарт, похоже, еще не имеет специализированной платформы для юнит-тестирования. Каков наилучший подход для написания и запуска юнит-тестов?

В исходном коде Dart есть несколько примеров очень низкого уровня (например, \ tests \ corelib \ src \ ListTest.dart), например:

class ListTest {

  static testMain() {
    testList();
    testExpandableList();
  }

  static void testList() { ... }
  static void testExpandableList() { ... }
}

main() {
  ListTest.testMain();
}

Это рекомендуемый способ написания тестов в Dart или есть какие-то усилия, чтобы упростить его с помощью некоторой библиотеки модульного тестирования, такой как x-unit?

Есть ли простой способ, как запустить все написанные таким образом юнит-тесты и посмотреть результаты?

Ответы [ 6 ]

13 голосов
/ 09 декабря 2011

Юнит-тестирование в Dart все еще находится в стадии разработки. Мы (авторы Dart) в настоящее время используем скрипт Python (tools / test.py) для выполнения всех наших тестов. Сценарий запускает предопределенные каталоги, ищет файлы, оканчивающиеся на «Test», выполняет их и сравнивает с ожидаемым результатом.

Несколько дней назад была представлена ​​первая версия test.dart (эквивалент в Dart). В ближайшее время мы переключимся с tools / test.py на tools / test.dart, чтобы выполнить все наши тесты.

Если вы пишете большой проект, вы можете повторно использовать нашу платформу тестирования. Мы используем его ежедневно, и он довольно стабильный. Для небольших проектов время, потраченное на изучение структуры, может не стоить усилий. Кроме того, я не удивлюсь, если будут (или будут) другие тестовые рамки.

ListTest из вашего вопроса был написан очень рано, когда функции верхнего уровня еще не были доступны. С тех пор он был изменен (с добавлением основной функции), но мы больше не будем писать тест таким образом. Если в этом нет необходимости, мы не создаем классы в наших тестах. См., Например, здесь для более позднего теста.

Редактировать: в клиенте / testing / unittest / также есть инфраструктура модульного тестирования. Смотрите здесь для теста, использующего эту платформу. Это также имеет то преимущество, что работает в браузере.

7 голосов
/ 29 июня 2012

dartlang.org имеет очень длинную статью о текущем состоянии модульного тестирования в дротике .Документацию по API можно найти здесь .

import 'package:unittest/unittest.dart';

void main() {
  test('QuickSort', () =>
    expect(QuickSort([5, 4, 3, 2, 1]),
      orderedEquals([1, 2, 3, 4, 5]))
  );
}

int _Partition(List array, int left, int right, int pivotIndex) {
  var pivotValue = array[pivotIndex];
  array[pivotIndex] = array[right];
  array[right] = pivotValue;
  var storeIndex = left;
  for (var i = left; i < right; i++) {
    if (array[i] < pivotValue) {
      var tmp = array[i];
      array[i] = array[storeIndex];
      array[storeIndex] = tmp;
    }
  }
  var tmp = array[storeIndex];
  array[storeIndex] = array[right];
  array[right] = tmp;
  return storeIndex;
}

void _QuickSort(List array, int left, int right) {
  if (left < right) {
    int pivotIndex = left + ((right-left) / 2);
    pivotIndex = _Partition(array, left, right, pivotIndex);
    _QuickSort(array, left, pivotIndex-1);
    _QuickSort(array, pivotIndex+1, right);
  }
}

List QuickSort(List array) {
  _QuickSort(array, 0, array.length-1);
  return array;
}
5 голосов
/ 20 декабря 2011

В этом посте из «Кодирования Адама» (через G +) дается очень подробное описание текущего состояния модульного тестирования дротиков с красивыми скриншотами представления In-Browser ваших модульных тестов.*

2 голосов
/ 11 января 2016

Используйте тест Дартс https://pub.dartlang.org/packages/test

Этот пакет ранее назывался unittest , который сейчас устарел, но вы можете встретить старые статьи об этом. Для пакета «test» должны быть написаны новые тесты.

Тесты можно запускать вручную (как любая другая программа Dart) или с помощью pub (который может запускать отдельные тесты или несколько тестов, найденных в каталоге).

1 голос
/ 06 февраля 2012

Блог о TDD в Dart: http://tdd -dart.blogspot.com /

1 голос
/ 20 декабря 2011

На YouTube есть пример одного подхода, DartUnit: TDD для FizzBuzz в Dart

Код включен GitHub .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...