我正在测试一个模块,其中每个测试类共享相同的行为:
我决定使用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
}
}
Run Code Online (Sandbox Code Playgroud)
SalesTest.Order文件:
public partial class SalesTest
{
[TestMethod]
public void SaveOrder_OnlyRequiredValuesFilled_SuccessfullySaved()
{
//Run some SQL queries
}
}
Run Code Online (Sandbox Code Playgroud)
ven*_*mit 13
看起来你正在使用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
}
}
Run Code Online (Sandbox Code Playgroud)
这将工作正常,我可以继承BaseTest任何测试,并且Intiailize和Cleanup将在任何测试之前和之后执行.