我不确定真正的单元测试是否应该严格地与外部系统(如数据库)进行交互,但我的确如此 - 我的设置代码的想法确保数据库处于某种状态,然后我的单元测试期望来自被调用的方法;我需要检查数据库访问代码是否正确。
我想在多个测试类中使用相同的DB测试数据,而不是将其复制粘贴到每个类中。 [TestInitialize]
我想知道如何做到最好。选项似乎包括:
我更希望更新数据库的代码是我的C#代码的一部分,但是想知道MSTest项目是否有更典型的方式来处理这个问题?
答案 0 :(得分:2)
您可以使用继承在多个单元测试类之间共享设置数据。
您可以创建一个基础测试类,让其他类继承它(包括将为每个测试调用的[TestInitialize]
)。
看看这篇文章Structuring Unit Tests,它展示了如何将测试结构用于具有所有测试的通用设置代码的测试
使用上面的链接作为参考,测试结构可能看起来像......
[TestClass]
public partial class DbTests {
protected DbContext db;
[TestInitialize]
public virtual void Init() {
//Virtual so it could be overridden in derived classes if needed.
//...check the DB-access code is doing the right thing.
}
[TestClass]
public class Test1 : DbTests {
[TestMethod]
public void Should_Do_Some_Test(){...}
[TestMethod]
public void Should_Do_Some_Db_Test(){...}
}
[TestClass]
public class Test2 : DbTests {
[TestMethod]
public void Should_Do_Some_Other_Test(){...}
}
}
我使用上述格式来构建共享公共设置代码的测试。