Используйте один и тот же 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
Вы можете использовать источник данных, чтобы указать информацию о целевом сервере и настроить свой тестовый код.