Visual Studio 2013: создание упорядоченных тестов

#unit-testing #visual-studio-express #ordered-test

#модульное тестирование #visual-studio-express #упорядоченный-тест

Вопрос:

Может кто-нибудь предложить способ запуска тестов в определенном порядке в Visual Studio 2013 Express? Есть ли способ создать список воспроизведения для тестов, который также определяет порядок их запуска?

Кстати: это функциональные тесты с использованием Selenium, написанные как модульные тесты в C # / Visual Studio. Не настоящие модульные тесты. Иногда набор регрессионных тестов настолько велик, что для выполнения всех тестов требуется некоторое время. В этих случаях я часто сталкивался с необходимостью запуска теста в приоритетном порядке. Или могут быть случаи, когда сложно выполнить некоторые тесты без предварительного запуска других тестов. В этом отношении это немного сложнее, чем обычные модульные тесты (по этой причине это обычно выполняется специалистами по тестированию, в то время как модульные тесты выполняются разработчиками).

Я организовал тесты в классах со связанными методами тестирования. Пример: все тесты входа в систему находятся в классе с именем LoginTests и т. Д.

 Class LoginTests:
- AdminCanLogin (...)
- UserCanLogin (...)
- IncorrectLoginFails (...)
- ...

CreatePostTests
- CanCreateEmptyPost (...)
- CanCreateBasicPost (...)
...
  

Эти классы являются классами модульного тестирования в их собственном проекте. Они, в свою очередь, вызывают классы и методы в библиотеке классов, использующей Selenium.

MS предлагает создать проект «Упорядоченный модульный тест». Однако это недоступно в экспресс-версии.

Комментарии:

1. Короче говоря, VS Express не поддерживает упорядоченные тесты, но если вам удастся получить более высокую версию, это выведет вас на правильный путь. msdn.microsoft.com/en-us/library/ms182631.aspx

2. Да, я знаю. И я жду лицензии для Pro. Но все же — если бы был способ сделать то же самое в Express, это было бы еще лучше.

3. вау, этот пост был хорошо очищен, лол.

Ответ №1:

Чтобы напрямую ответить на ваш запрос списка воспроизведения, см. Статью MS: http://msdn.microsoft.com/en-us/library/hh270865.aspx В Resharper также есть хороший инструмент для тестирования списка воспроизведения.

Вот статья о том, как настроить упорядоченные тесты, но вы не можете использовать эту функцию с Express, поскольку для этого требуются Visual Studio Ultimate, Visual Studio Premium, Visual Studio Test Professional. http://msdn.microsoft.com/en-us/library/ms182631.aspx

Если вам нужно, чтобы они были упорядочены, то они, скорее всего, являются интеграционными тестами. Я предполагаю, что вы хотели бы, чтобы они были упорядочены, чтобы вы могли либо подготовить данные для теста, либо удалить данные обратно после теста.

Есть несколько способов удовлетворить это требование, если это так. С помощью MSTest для этого есть 4 атрибута, вы можете увидеть более подробную информацию о том, когда они выполняются здесь http://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspx .

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

Если вам нужен тест для создания продукта, чтобы другой тест мог использовать этот продукт и проверить, можно ли его добавить в корзину, я бы создал метод «SetupProduct», который сделает это за вас, поскольку я уверен, что вы будете тестировать различные вещи, для которых потребуется продукт. Это предотвратит наличие тестовых зависимостей.

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

Этот код взят из сообщения в блоге, связанного выше, я размещаю его здесь на случай, если ссылка когда-либо исчезнет.

Вот пример тестового класса, использующего атрибуты setup / tear down для помощи в ваших тестах.

 [TestClass]
public class VSTSClass1
{

    private TestContext testContextInstance;

    public TestContext TestContext
    {
        get
        {
            return testContextInstance;
        }
        set
        {
            testContextInstance = value;
        }
    }

    [ClassInitialize]
    public static void ClassSetup(TestContext a)
    {
        Console.WriteLine("Class Setup");
    }

    [TestInitialize]
    public void TestInit()
    {
        Console.WriteLine("Test Init");

    }

    [TestMethod]
    public void Test1()
    {
        Console.WriteLine("Test1");
    }

    [TestMethod]
    public void Test2()
    {
        Console.WriteLine("Test2");

    }

    [TestMethod]
    public void Test3()
    {
        Console.WriteLine("Test3");
    }

    [TestCleanup]
    public void TestCleanUp()
    {
        Console.WriteLine("TestCleanUp");
    }

    [ClassCleanup]
    public static void ClassCleanUp()
    {
        Console.WriteLine("ClassCleanUp");
    }
}
  

Вот порядок, в котором были запущены методы.

 Class Setup
Test Init
Test1
TestCleanUp
Test Init
Test2
TestCleanUp
Test Init
Test3
TestCleanUp
ClassCleanUp
  

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