如果没有设置testsettings文件,为什么在VS2013中只使用一个线程?

时间:2014-03-26 10:12:09

标签: c# multithreading visual-studio unit-testing visual-studio-2013

给出以下单元测试类,其中包含3个测试。每个测试只是将其线程ID写入stdout。

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        Console.WriteLine("thread id: {0}",System.Threading.Thread.CurrentThread.ManagedThreadId);
        Assert.IsTrue(true);
    }

    [TestMethod]
    public void TestMethod2()
    {
        Console.WriteLine("thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
        Assert.IsTrue(true);
    }

    [TestMethod]
    public void TestMethod3()
    {
        Console.WriteLine("thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
        Assert.IsTrue(true);
    }
}

如果在解决方案级别没有设置tessettings文件,则所有测试的线程ID都相同。 enter image description here

只要testsettings文件设置为解决方案,每个线程的线程ID就会不同(因为线程将由线程池加载)。

这是我演示的(默认)testsettings文件

<TestSettings
  id="bc3c3610-4c7e-4f77-ad67-748d0f8d07d9"
  name="TestSettings1"
  enableDefaultDataCollectors="false"
  xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description><!--_locID_text="Description1"-->These are default test settings for a local test run.</Description>
  <Deployment enabled="false" />
</TestSettings>

问题:

  • 为什么只有一个线程用于执行unittests如果 testsettings文件未明确设置为解决方案?

0 个答案:

没有答案