2

我正在使用 Monodevelop 中包含的 NUnit 测试运行程序。我有 2 个测试必须与静态资源交互,所以我需要它们串行运行而不是并行运行。我试过使用类似的东西

static string Locker="foo";
[Test]
public void Test1()
{
  lock(Locker)
  {
    //....
  }
}
[Test]
public void Test2()
{
  lock(Locker)
  {
    //....
  }
}

这似乎不起作用。还有其他方法吗?

4

5 回答 5

2

我在真正需要时使用这种方法(我认为这是一个坏主意):

using System.Threading;
private ManualResetEvent FixtureHandle = new ManualResetEvent(true);
[SetUp]
public void SetUp()
{
    FixtureHandle.WaitOne();
}
[TearDown]
public void TearDown()
{
    FixtureHandle.Set();
}
[Test]
public void Test1()
{
  //only test
}
[Test]
public void Test2()
{
  //only test
}
于 2015-10-01T09:02:43.523 回答
1

不知道 Monodevelop 但 nunit 控制台有命令行参数 /nothread

我认为在 Monodevelop 中应该是类似的东西

于 2013-02-03T20:27:36.203 回答
1

对于连续运行测试,最好使用 Order 属性:

static string Locker="foo";
[Test, Order(1)]
public void Test1()
{
  lock(Locker)
  {
    //....
  }
}
[Test, Order(2)]
public void Test2()
{
  lock(Locker)
  {
    //....
  }
}
于 2017-03-25T01:37:27.357 回答
0

不要直接使用静态资源,而是将其提取到依赖项中,然后模拟它(使用moq或类似的东西)。

这将让您编写实际的单元测试来隔离您尝试测试的特定代码,而不必担心外部上下文。

于 2013-02-03T21:19:58.187 回答
-3

您错过了单元测试的重点。单元测试必须在各个方面都是独立的。

这意味着执行顺序不得影响单元测试结果。

于 2013-02-03T21:09:06.547 回答