Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以顺序而不是并行方式运行的测试用例_C#_Visual Studio 2010_Tdd_Resharper 6.1 - Fatal编程技术网

C# 以顺序而不是并行方式运行的测试用例

C# 以顺序而不是并行方式运行的测试用例,c#,visual-studio-2010,tdd,resharper-6.1,C#,Visual Studio 2010,Tdd,Resharper 6.1,我在谷歌上搜索这个问题,但找不到答案 我的测试运行似乎并行运行,并导致彼此失败。它们单独运行时都会通过。我试着在测试中添加线程,让他们睡觉,但没有运气 有没有办法依次运行这些测试? 我的环境: VisualStudio2010 Resharper Jet brains 6.1我建议您进行确定性的单元测试。也就是说,它们不依赖于运行顺序,也不依赖于在之前或之后运行其他测试。不这样做会导致失败。大多数测试运行者基于测试方法完全独立这一事实 从调用测试类的方法的方式来看,这一事实本质上是显而易见的。e

我在谷歌上搜索这个问题,但找不到答案

我的测试运行似乎并行运行,并导致彼此失败。它们单独运行时都会通过。我试着在测试中添加线程,让他们睡觉,但没有运气

有没有办法依次运行这些测试?

我的环境:

VisualStudio2010
Resharper Jet brains 6.1

我建议您进行确定性的单元测试。也就是说,它们不依赖于运行顺序,也不依赖于在之前或之后运行其他测试。不这样做会导致失败。大多数测试运行者基于测试方法完全独立这一事实

从调用测试类的方法的方式来看,这一事实本质上是显而易见的。e、 g.使用MS Test,您可以拥有程序集、类和测试初始化方法。所有这些都是为每个被调用的TestMethod调用的。例如,对于以下类:

   [TestClass()]
   public class DivideClassTest
   {
      [AssemblyInitialize()]
      public static void AssemblyInit(TestContext context)
      {
         Console.WriteLine("Assembly Init");
         }

      [ClassInitialize()]
      public static void ClassInit(TestContext context)
      {
         Console.WriteLine("ClassInit");
      }

      [TestInitialize()]
      public void Initialize()
      {
         Console.WriteLine("TestMethodInit");
      }

      [TestCleanup()]
      public void Cleanup()
      {
         Console.WriteLine("TestMethodCleanup");
      }

      [ClassCleanup()]
      public static void ClassCleanup()
      {
         Console.WriteLine("ClassCleanup");
      }

      [AssemblyCleanup()]
      public static void AssemblyCleanup()
      {
         Console.WriteLine("AssemblyCleanup");
      }

      [TestMethod()]
      public void Test1()
      {
          Console.WriteLine("Test1");
      }
      [TestMethod()]
      public void Test2()
      {
          Console.WriteLine("Test2");
      }
  } 
您将看到如下输出

Assembly Init
ClassInit
TestMethodInit
Test1
TestMethodCleanup
TestMethodInit
Test2
TestMethodCleanup
ClassCleanup
AssemblyCleanup

虽然有一个“Test”类,但TestMethod本身被认为是测试。一个“测试”类可以有效地进行许多测试。

我建议您使用确定性的单元测试。也就是说,它们不依赖于运行顺序,也不依赖于在之前或之后运行其他测试。不这样做会导致失败。大多数测试运行者基于测试方法完全独立这一事实

从调用测试类的方法的方式来看,这一事实本质上是显而易见的。e、 g.使用MS Test,您可以拥有程序集、类和测试初始化方法。所有这些都是为每个被调用的TestMethod调用的。例如,对于以下类:

   [TestClass()]
   public class DivideClassTest
   {
      [AssemblyInitialize()]
      public static void AssemblyInit(TestContext context)
      {
         Console.WriteLine("Assembly Init");
         }

      [ClassInitialize()]
      public static void ClassInit(TestContext context)
      {
         Console.WriteLine("ClassInit");
      }

      [TestInitialize()]
      public void Initialize()
      {
         Console.WriteLine("TestMethodInit");
      }

      [TestCleanup()]
      public void Cleanup()
      {
         Console.WriteLine("TestMethodCleanup");
      }

      [ClassCleanup()]
      public static void ClassCleanup()
      {
         Console.WriteLine("ClassCleanup");
      }

      [AssemblyCleanup()]
      public static void AssemblyCleanup()
      {
         Console.WriteLine("AssemblyCleanup");
      }

      [TestMethod()]
      public void Test1()
      {
          Console.WriteLine("Test1");
      }
      [TestMethod()]
      public void Test2()
      {
          Console.WriteLine("Test2");
      }
  } 
您将看到如下输出

Assembly Init
ClassInit
TestMethodInit
Test1
TestMethodCleanup
TestMethodInit
Test2
TestMethodCleanup
ClassCleanup
AssemblyCleanup

虽然有一个“Test”类,但TestMethod本身被认为是测试。“test”类可以有效地进行许多测试。

我觉得您在某个地方有静态数据,这些数据从一个测试持续到另一个测试,这可能是问题的根本原因。正如Peter Ritchie所建议的那样,您应该重写代码/测试,这样静态依赖性就不会影响其他测试。我在最初的一些测试中也犯了这个错误。我将在Test1中的DB中设置一个值,然后Test2将期望在那里。这是一个灾难的配方。可能重复的声音对我来说,你有某个地方的静态数据,从一个测试到另一个,这可能是你的问题的根本原因。正如Peter Ritchie所建议的那样,您应该重写代码/测试,这样静态依赖性就不会影响其他测试。我在最初的一些测试中也犯了这个错误。我将在Test1中的DB中设置一个值,然后Test2将期望在那里。这是造成灾难的原因。可能是