Модульный тест Visual Studio 2008: Как выполнить один за другим? - PullRequest
4 голосов
/ 19 июня 2009

При выполнении модульного тестирования есть ли способ указать [TestClass ()] выполнить один [TestMethod ()] один за другим? (Вместо Visual Studio для запуска нескольких потоков). Это потребуется только для одного или двух моих классов тестирования.

Ответы [ 3 ]

2 голосов
/ 21 июня 2009

Если вы используете Visual Studio 2008 Team Suite или (как мне кажется) одно из выпусков Tester, вы можете создать Ordered Test и добавить все свои модульные тесты в этот Ordered Test.

1 голос
/ 19 июня 2009

Нет, в Visual Studio 2008 нет способа сделать это, используя инструменты по умолчанию.

Это возможно, если добавить некоторый ... интересный код конфигурации в метод TestInit. Например, все ваши тестовые классы могут быть производными от следующего базового класса.

[TestClass]
public class ExecuteOneAtTimeBase {
  private static object s_mutex = new object();

  [TestInit]
  public void TestInit() {
    Monitor.Enter(s_mutex);
  }

  [TestCleanup]
  public void TestCleanup() {
    Monitor.Exit(s_mutex);
  }
}

Все экземпляры TestMethod заключаются в скобки при вызовах методов TestInit и TestCleanup. Используя комбо Monitor.Enter / Exit, вы можете гарантировать, что данный метод модульного теста удерживает блокировку на время его выполнения. Поэтому несколько потоков не могут одновременно выполнять разные тесты в одном домене приложений.

Бывают случаи, когда это может привести к тупику в процессе тестирования. Но я думаю, что это, вероятно, небольшая проблема, поскольку это не рабочий код.

0 голосов
/ 19 июня 2009

Вы можете отлаживать или запускать любой отдельный TestMethod.

  • Поместите курсор в TestMethod
  • для отладки: Ctrl-R, Ctrl-T или Test -> Debug -> Tests In Current Context
  • для запуска: Ctrl-R, T или Test -> Run-> Tests In Current Context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...