相关疑难解决方法(0)

有没有办法按顺序使用MSTests运行单元测试?

我在一个主要是单线程,单用户的应用程序中工作.这里和那里有一些工作线程,它们只使用线程安全对象和类.单元测试实际上是测试具有多个线程的那些(为测试明确创建),并且它们测试正常.

在测试非线程安全的业务对象和子系统时,VSTS单元测试失败.它们可以不是线程安全的,这就是应用程序使用它们的方式.

但是,每个TestMethod的"一个线程"的MS测试方法会让我们失望.我必须在许多单元测试类中实现对象锁,只是为了确保测试一个接一个地运行(我真的不关心顺序,但是我不能让两个测试方法在同一个对象上运行同一时间).

代码如下所示:

[TestClass]
public class TestSomeObject
{
   static object turnStile = new object();
...
   [TestMethod]
   public void T01_TestThis()
   {
      lock(turnStile)
      {
      .. actual test code
      }
   }

   [TestMethod]
   public void T02_TestThat()
   {
      lock(turnStile)
      {
      -- actual test code
      }
   }

}
Run Code Online (Sandbox Code Playgroud)

是否有更好/更优雅的方式使测试顺序进行?

c# unit-testing visual-studio-2008

35
推荐指数
5
解决办法
4万
查看次数

Visual Studio 2012测试运行器如何应用线程?

每个包含测试的类是否都在它自己的线程中运行?或者每个单独的测试都在它自己的线程中运行?如果每个包含测试的类都有自己的线程,它们是否同时运行?即,来自A类的测试是否会与B类测试同时进行?或者是A类的测试运行(每个都在自己的线程上),然后是B类的测试(每个都在自己的线程上)?

mstest visual-studio-test-runner

5
推荐指数
2
解决办法
2732
查看次数

mstest中处理异常的方法

我有很多以这种格式编写的测试:

[TestMethod]
public void TestMethod1()
{
    try
    {
        DoShomething();
    }
    catch (Exception e)
    {
        WriteExceptionLogWithScreenshot( e );
    }
}

[TestMethod]
public void TestMethod2()
{
    try
    {
        DoAnotherShomething();
    }
    catch ( Exception e )
    {
        WriteExceptionLogWithScreenshot( e );
    }
}
Run Code Online (Sandbox Code Playgroud)

我想使用类似的东西来统一这个异常处理

[TestCleanup]
public void Cleanup()
{
    // find out if an exception was thrown and run WriteExceptionLogWithScreenshot( e )
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以避免在所有方法中编写 try catch 块。

mstest 支持这样的东西吗?有人知道我能做什么吗?

c# mstest

3
推荐指数
1
解决办法
3809
查看次数