Преобразование приложения для домашнего варочного теста в стандартную среду модульного тестирования - PullRequest
2 голосов
/ 08 октября 2008

У меня есть МНОЖЕСТВО тестов, написанных для части программного обеспечения (что БОЛЬШОЕ), но оно было построено, по сути, как самостоятельный тест в C #. Хотя это работает достаточно хорошо, оно страдает от нескольких недостатков, немаловажным из которых является то, что он не использует стандартную среду тестирования, и в итоге требуется, чтобы человек, выполняющий тест, комментировал вызовы тестов, которые не должны выполняться (когда не требуется запускать весь набор тестов). Я хотел бы включить его в свой автоматизированный процесс тестирования.

Я видел, что в Test Edition VS 2008 есть понятие «Общий тест», который может делать то, что я хочу, но в настоящее время мы не можем тратить деньги на эту версию. Я недавно начал использовать версию VS 2008 Pro.

Эти методы испытаний следуют знакомой схеме:

  • Выполните некоторые настройки для теста.
  • Выполнить тест.
  • Сброс для следующего теста.

Каждый из них возвращает bool (pass / fail) и строку ref для причины сбоя, заполняется в случае сбоя.

С другой стороны, по крайней мере, методы испытаний последовательны.

Сегодня вечером я сижу здесь и обдумываю подход, который я мог бы использовать завтра утром для переноса всего этого тестового кода в среду тестирования, и, честно говоря, меня не очень радует идея переноса более 8-9K строк тестового кода вручную, чтобы сделать преобразование.

Был ли у вас опыт такого преобразования? Есть ли у вас какие-либо советы? Я думаю, что могу застревать во всем, делая глобальный поиск / замену и меняя тесты вручную.

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 08 октября 2008

Если вы используете NUnit (что и нужно), вам нужно будет создать новый метод тестирования для каждого из ваших текущих методов тестирования. NUnit использует отражение, чтобы запросить класс теста для методов, помеченных атрибутом [Test], и именно так он строит свой список тестов, отображаемых в пользовательском интерфейсе, а классы теста используют метод NUnit Assert, чтобы указать, прошел или не прошел.

Мне кажется, что если ваши методы тестирования будут такими же последовательными, как вы говорите, все эти методы NUnit будут выглядеть примерно так:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

Как только вы добьетесь того, что это сработает, ваш следующий шаг - написать программу, которая использует отражение, чтобы получить все имена методов теста в вашем старом классе теста и создать файл .cs, который имеет метод NUnit для каждого из ваших исходных методы испытаний.

Раздражает, может быть, но не очень больно. И вам нужно будет сделать это только один раз.

1 голос
/ 08 октября 2008

Вы собираетесь пережить идиому «Унция предотвращения стоит фунта лечения». Особенно это актуально в программировании.

Вы не упоминаете о NUnit (который, я думаю, был куплен Microsoft в 2008 году, но не удерживайте меня на этом). Есть ли какая-то особенная причина, по которой вы просто не использовали NUnit?

...