当前,一个sql单元测试包括5个部分:
- Pre-Initialise
- Pre-Test
- Test
- Post-Test
- Post-Cleanup
对于我的某些测试,“ pre-test”部分是相同的,并且我必须多次复制粘贴Pre-Test代码,代码重复是一个坏主意...所以我的问题是是否有任何写方法仅在某个地方进行一次预测试,然后通过在单元测试项目中调用一个函数来运行它?
我当前的C#文件在我的测试用例后面的示例:
[TestClass()]
public class SqlServerUnitTestAssignUserToAssignment : SqlDatabaseTestClass
{
private TransactionScope trans;
public SqlServerUnitTestAssignUserToAssignment()
{
InitializeComponent();
}
[TestInitialize()]
public void TestInitialize()
{
trans = new TransactionScope();
base.InitializeTest();
}
[TestCleanup()]
public void TestCleanup()
{
base.CleanupTest();
trans.Dispose();
}
// generated code below:
Designer support code
Additional test attributes
[TestMethod()]
public void core_AssignUserToAssignmentTest()...
private Sql DatabaseTestActions core_AssignUserToAssignmentTestData
}
难题的两个部分是:
每个类的“通用脚本”:如果需要在给定测试类中的所有测试之前或之后运行通用代码,只需使用设计器将SQL放入该类的通用脚本中即可。
基类测试初始化程序:如果需要在给定项目(或解决方案)中的所有测试之前或之后运行通用代码,请像这样创建一个新的基类,并使每个测试类都派生自该类。
--
public class MySqlTestsBase : SqlDatabaseTestClass
{
[TestInitialize]
public void TestInitialize()
{
PrivilegedContext = TestService.OpenPrivilegedContext();
CleanupTables();
//"Common Scripts" are run
base.InitializeTest();
}
[TestCleanup]
public void TestCleanup()
{
CleanupTables();
base.CleanupTest();
}
/// <summary>
/// Deletes data from all tables that tests might have affected.
/// </summary>
private void CleanupTables()
{
TestService.Execute(PrivilegedContext, PrivilegedContext, new SqlDatabaseTestAction
{
SqlScript = @"
DELETE CustomerOrder
DELETE Customer
DELETE Order
"
});
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句