Используйте один и тот же TestClass с другим базовым классом

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

При тестировании общей модели я создал поддельный общий сервер с поддельным адаптером, которые были определены в базовом тестовом классе, и все тестовые классы наследуются от него. Было выполнено более ста тестов.

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

Можно ли как-то вызывать все тесты столько раз, сколько подсчитано серверов, каждый раз с различным базовым классом тестов (тип сервера и конструктор)??

пример:

[TestClass]
public class GeneralServerTests : BaseServer
{
    [TestMethod]
    public void IsAlive_ChecksInteraction_ReturnsTrue()
    {
        Assert.IsTrue(GeneralServer.Adapter.IsAlive());
    }
    ...
}

Базовый тестовый класс

[TestClass]
public abstract class BaseServer
{
    protected Server GeneralServer;

    [TestInitialize]
    public void Setup()
    {
        //here I assign the Server constructor,
    }
}

Поэтому мне нужно вызвать класс GeneralServerTests с разных серверов.

Надеюсь, вы понимаете, что я имею в виду:)

любое решение?

2 ответа

Решение

Хорошо, я решил это с помощью

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",|DataDirectory|\ArchiveTestingData.csv", "ArchiveTestingData#csv", DataAccessMethod.Sequential)]

где написана вся необходимая информация об адаптерах.

Теперь все тесты выполняются столько раз, сколько адаптеров находится в файле.

Если вы интерпретируете наследование, используя концепцию "есть", читая предложение: "GeneralServerTests - это BaseServer", то это, похоже, не имеет особого смысла. Поэтому я думаю, что ваша модель наследования тестов, вероятно, нуждается в небольшом пересмотре и рефакторинге.

Теперь, что касается выполнения одного и того же теста для разных входных данных, вы должны провести тесты на основе данных:

http://msdn.microsoft.com/en-us/library/ms182527.aspx

Вы можете использовать источник данных, чтобы указать информацию о целевом сервере и настроить свой тестовый код.

Другие вопросы по тегам