[英]C# Unit Testing with TestInitialize/TestCleanup in base class
我正在測試一個模塊,其中每個測試類共享相同的行為:
我決定使用TestInitialize和TestCleanup分別執行事務的Begin和Rollback。
strait forward方法是在父類中編寫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
}
}
看起來你正在使用Microsoft.VisualStudio.TestTools.UnitTesting
框架。 我沒有看到使用基類進行清理和初始化的任何問題。
例如
[TestClass]
public class TestDemo : BaseTests
{
[TestMethod]
public void SaveOrder_OnlyRequiredValuesFilled_SuccessfullySaved()
{
//Run some SQL queries
}
}
[TestClass]
public abstract class BaseTests
{
[TestInitialize]
public void Setup()
{
Console.WriteLine("Setup executed.");
//begin transaction
}
[TestCleanup]
public void Cleanup()
{
Console.WriteLine("Cleanup executed.");
//rollback transaction
}
}
這樣可以正常工作,我可以將BaseTest
繼承到任何Test,並且Intiailize和Cleanup將在任何測試之前和之后執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.