当我 运行 行中有多个文本时,NSubstitute Received() 不起作用,但是如果我 运行 单独测试它们会起作用

NSubstitue Received() does not work when I run multible test in row, but if I run the test individually they work

我有多个单元测试,我会在其中检查是否调用了某个方法。

我使用 NSubstitute 模拟库来检查在 "Received()" 方法的帮助下调用了一个方法,就像那样:

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

当我单独 运行 测试时,测试工作正常,但是当 运行 所有测试时,其中一些测试无缘无故地失败了。当我调试代码时,我看到应该调用的方法被调用了,但是 NSubstitute 的 Received() 方法说根本没有调用。

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

MessageHandling.ClearReceivedCalls();

但这似乎没有帮助。

在使用 Received() 方法时,还有什么我应该注意的吗?

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

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