当我在行中运行多重测试时,NSubstitue Received()不起作用,但是如果我单独运行测试,它们将起作用

时间:2019-04-24 14:41:05

标签: c# unit-testing nsubstitute

我有多个单元测试,在这里我检查是否调用了一个方法。

我使用NSubstitute模拟库进行检查,而是借助“ Received()”方法调用了一个方法,就像这样:

MessageHandling.Received().Submit(Messages.DATA_EXPORT_SUCCESS);

当我分别运行它们时,这些测试运行良好,但是当全部运行它们时,其中一些由于没有明显的原因而失败。在调试代码时,我看到应该调用的方法已被调用,但是NSubstitute的Received()方法表示根本没有调用。

我也确实在我的TearDown方法中调用了ClearReceivedCalls()

MessageHandling.ClearReceivedCalls();

但这似乎无济于事。

使用Received()方法时,我还有其他需要注意的事情吗?

我的测试功能要比检查呼叫复杂得多,但这是我的测试失败的唯一原因。

1 个答案:

答案 0 :(得分:1)

我假设MessageHandling被初始化为单个实例属性,该属性在每次测试中都使用?通过在每个测试中初始化一个新的模拟实例,尝试使您的测试类变为无状态。