Можно ли создавать тесты, управляемые данными, с помощью MSpec?

Можно ли с помощью MSpec создавать тесты, управляемые данными?

Например, NUnit имеет атрибут TestCase, который позволяет использовать несколько случаев, управляемых данными.

[TestFixture]
public class ExampleOfTestCases
{

  [TestCase(1,2,3)]
  [TestCase(3,3,6)]  
  [TestCase(2,2,4)]  
  public void when_adding_two_numbers(int number1, int number2, int expected)
  {
     Assert.That(number1 + number2, Is.EqualTo(expected);
  }
}

person Aeden    schedule 25.05.2011    source источник
comment
planetgeek.ch/2013/05 /26/   -  person Mohsen    schedule 04.07.2017


Ответы (1)


Это невозможно. Я бы посоветовал не использовать MSpec с данными, использовать NUnit или MbUnit, если вам нужны тесты строк или комбинаторные тесты (и MSpec, когда вы описываете поведение).

Дополнение: Aeden, TestCases/RowTests невозможны с MSpec и, вероятно, никогда не будут. В таких случаях используйте NUnit, так как это лучший инструмент для этой работы. MSpec превосходен, когда вы хотите указать поведение системы (при отправке заказа => следует уведомить службу выполнения). Для TestCases с MSpec вам нужно будет создать контекст для каждой комбинации входных данных, что может привести к взрыву класса.

MSpec также хорош, когда вы хотите иметь разумную структуру теста, которую легко освоить. Вместо того, чтобы начинать с чистого листа бумаги (вспомните методы NUnit [Test]), MSpec дает вам шаблон (Установить, Потому что, Это), вокруг которого вы можете построить свои спецификации. Сравните это с приведенным вами примером, где Arrange, Act и Assert объединены в одну строку кода.

person Alexander Groß    schedule 25.05.2011
comment
Извините, если это кажется слишком низким уровнем, но у меня все тот же вопрос, что и в моем последующем вопросе. Как вы определяете поведение системы? Это поведение предоставляется внешнему клиенту (например, пользователю, другой системе) - person Aeden; 05.06.2011
comment
@Aeden: Он имеет в виду, что он представляет собой исполняемую и удобочитаемую документацию, которая описывает, как ведет себя ваша [часть] программного обеспечения (системы). - person Mohsen; 04.07.2017