C# VisualStudio命令测试运行两次
因此,我有一个非常简单的设置来初始化LocalDB数据库以运行一些集成测试 在我的设置中,我将按如下方式初始化测试:C# VisualStudio命令测试运行两次,c#,visual-studio,unit-testing,visual-studio-2012,mstest,C#,Visual Studio,Unit Testing,Visual Studio 2012,Mstest,因此,我有一个非常简单的设置来初始化LocalDB数据库以运行一些集成测试 在我的设置中,我将按如下方式初始化测试: [AssemblyInitialize] public static void AssemblyInitialize(TestContext context) { AppDomain.CurrentDomain.SetData( "DataDirectory", Path.Combine(AppDomain.CurrentDomain.Base
[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();
}
}
我有一个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>
顺便说一句,测试效果很好…但是
出于某种原因,我的测试运行了两次
因此,我在每个测试上都有一个断点,当我单击test | Debug | All Tests时,测试执行两次,即使AssemblyInitialize
方法执行两次=(
更新1
我刚刚发现测试是在我的TestResults
文件夹下的两个不同文件夹中创建的,相差1秒
下图中的名称只是我的网络用户名
我的配置中缺少了什么?这是因为您的有序测试本身就是一个测试,因此运行所有测试意味着所有单独的测试都将与有序测试一样运行,因此,其中包含的那些测试将运行两次 您可以使用测试列表编辑器有选择地运行测试(Test\Windows\Test List Editor) 出于某种原因,我的测试运行了两次 您的测试运行两次,因为它们作为简单的单元测试和有序测试的一部分运行 甚至AssemblyInitialize方法也会执行两次 如果打开
bin\debug
文件夹,您将看到orderedtest作为orderedtest1.orderedtest
包含在其中。您已经打开了它,因此您看到它是一个简单的xml文件。此文件未编译到程序集中
当visual studio开始执行您的测试时,它首先选择单元测试。因此,它初始化包含单元测试的程序集。当它们完成时,它不知道有序测试包含来自同一程序集的测试,因此执行
AssemblyCleanup
。当它开始执行orderedtest时,它必须重新初始化安装程序集以测试其中包含的单元测试。有道理,但我不想运行两次测试。我不知道我的CI服务器中会发生什么。此外,这真的很奇怪,因为我的AssemblyInitialixe方法运行两次,这种方法应该每个测试程序集运行一次。我想我缺少一些配置,我不知道k您缺少任何配置-运行所有测试仅此而已。请使用测试列表编辑器仅运行已排序的测试。
<?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>