я тестирование модуля, где каждый класс испытаний разделяют такое же поведение:C# Модульное тестирование с TestInitialize/TestCleanup в базовом классе
- начать транзакцию
- Execute SQL запросов
- Откат транзакции
Я решил использовать TestInitialize и TestCleanup для выполнения Begin и Rollback транзакций соответственно.
Подход с прямым проходом будет записывать TestInitialize/TestCleanup в родительский класс, но это не будет работать с этой базой тестирования.
Работает для этого необходимо было использовать частичные классы. Этот подход представляется жизнеспособным в моем случае, потому что мои тестовые классы в основном без гражданства. Событие, не являющееся идеальным решением, по крайней мере спасло меня от нескольких действий копирования/вставки.
Кто-нибудь знает лучший способ сделать это?
Вот образец частичного класса решения:
В моем случае я проверяю каждый модуль отдельно, и для этого примера я буду использовать Sales модуль:
SalesTest.cs файл:
[TestClass]
public partial class SalesTest
{
[TestInitialize]
public void Setup()
{
//begin transaction
}
[TestCleanup]
public void Cleanup()
{
//rollback transaction
}
}
SalesTest.Order файл :
public partial class SalesTest
{
[TestMethod]
public void SaveOrder_OnlyRequiredValuesFilled_SuccessfullySaved()
{
//Run some SQL queries
}
}