所以我有一个非常简单的设置来初始化 LocalDB 数据库以运行一些集成测试。
在我的设置中,我正在初始化我的测试,如下所示:
[AssemblyInitialize]
public static void AssemblyInitialize(TestContext context)
{
AppDomain.CurrentDomain.SetData(
"DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ""));
System.Data.Entity.Database.SetInitializer(new MyDatabaseInitializer());
}
public class MyDatabaseInitializer : System.Data.Entity.DropCreateDatabaseAlways<Context>
{
protected override void Seed(Context context)
{
// Add entities to database.
context.Blogs.AddOrUpdate(x => x.Title, new Blog
{
BlogId = Guid.NewGuid(),
Title = "some Title"
});
context.SaveChanges();
}
}
我有三个这样的测试:
[TestMethod]
[DeploymentItem("Database1.mdf")]
[DeploymentItem("UnitTestProject1.dll.config")]
public void initialize()
{
}
[TestMethod]
public void TestMethod1()
{
var ctx = new Context();
var res = ctx.Blogs.ToList();
res.Should().NotBeNull().And.HaveCount(1);
}
[TestMethod]
public void it_should_be_able_to_add_a_new_blog()
{
var ctx = new Context();
ctx.Blogs.Add(new Blog {BlogId = Guid.NewGuid(), Title = "OMFG " + DateTime.Now.ToShortDateString()});
ctx.SaveChanges();
ctx.Blogs.Should().HaveCount(2);
}
我有一个 OrderedTest 文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<OrderedTest name="orderedtest1" storage="c:\users\jolmos\documents\visual studio 2012\projects\consoleapplication9\unittestproject1\orderedtest1.orderedtest" id="cc545e78-c463-4f38-88fc-ac8b49b420be" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<TestLinks>
<TestLink id="d0380f08-e99f-ebae-e5cd-9ae8196521cb" name="initialize" storage="bin\debug\unittestproject1.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="5b688acc-bf10-4c7e-4b60-69d8596bdd90" name="TestMethod1" storage="bin\debug\unittestproject1.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="0c248cf5-fa4f-6c24-b151-3ffdbae30f10" name="it_should_be_able_to_add_a_new_blog" storage="bin\debug\unittestproject1.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</TestLinks>
</OrderedTest>
顺便说一句,测试效果很好……但是……
出于某种原因,我的测试运行了两次
所以我在每个测试上都有一个断点,当我点击测试 | 调试 | 所有 Tests,即使AssemblyInitialize
方法执行两次,测试也会执行两次 =(
更新 1
我刚刚发现测试是在我的文件夹下的两个不同的文件夹中创建的,TestResults
相差1秒
下图中的名字只是我的网络用户名
我的配置中缺少什么?