解决方案 »

  1.   

    我们从来不使用vs的所谓单元测试。我们要求只要有bug,立刻进入调试环境,就不在执行后边的测试了。这样,你就能看到出错的详细信息,可以调试程序调用堆栈。我不知道 vs的所谓单元测试有没有这种执行模式。如果没有,那么就不要使用它了。你可以声明类似这样的数据结构Action[] testCases = new Action[]{DivTest1, XXXModule.Class2.Test2, ........};
    把要执行的单元测试放到一个数组里,然后以随机顺序执行个10遍,例如for(var i=0; i< testCases.Length; i++)
    {
        Action x = testCases[ new Random().Next(testCases.Length)];
        x();
    }就行了。不过就是调用一遍这些 DivTest1 之类的 void() 方法而已,你看到离开了 vs 的单元测试就不会执行他们了?
      

  2.   

    for(var i=0; i< 10; i++)
    {
        Action x = testCases[ new Random().Next(testCases.Length)];
        x();
    }有些所谓的单元测试工具,运行了好一阵子,然后给你一堆“红灯”信息,最后告诉你“1000个测试,有899个通过,111个未通过”。这种其实是很讨厌的工具。你应该选择那些可以设置为“仅找到第一个bug就停止、并且立刻进入调试环境”的自动工具。如果没有,那么就自己写上几十行代码自己写一个工具就行了。心中有更好的测试概念和操作流程,要比胡乱轻信工具更好。
      

  3.   

    唉,又写错啦。Test1 t1 = new Test1();
    Action[] testCases = new Action[]{t1.DivTest1, XXXModule.Class2.Test2, ........};
    ...........
    for(var i=0; i< 10 * testCases.Length; i++)
     {
         Action x = testCases[ new Random().Next(testCases.Length)];
         x();
         //这里可以给个进度状态显示
     }你可以在10个子线程里并发地调用测试程序,以便更好地发现问题。自己写上10几行代码区调用 DivTest1 这类的方法,不要再使用不能高效率地进行测试驱动开发的 vs 的单元测试了。那样,调试器可以直接停在 return a/b 这行代码上,你可以重构你的代码,然后重新开始测试。你可以可以把这10几行代码多写上1行代码,可以选择“仅执行最近3天的测试”而不是所有的测试用例。如果不知道如何写这10几行代码,找别人帮你写一个。在vs理进行测试驱动开发,不需要使用 vs 的单元测试。