单元测试 Parallel.Foreach C#

Unit Testing Parallel.Foreach C#

我一直在使用 JustMock 在 C# 中进行单元测试。 我面临的问题是我无法断言 Parallel.Foreach 中调用的函数。但是可以断言内部完成的分配。

Parallel.ForEach(aList, entity =>
{
    //Can be asserted using  Assert(5,parameter.value) in the test
    parameter.value = 5;

    //Cannot be asserted, assertion fails Mock.Assert(parameter) in the test
    //is arranged using MustBeCalled
    parameter.call();   
})

我在其他测试用例中也发现了同样的问题。这是 JustMock 的一些错误行为吗?

在进行并行处理时,您不能轻易假设某些事情会发生或不会发生,这使它变得更加困难。相反,您会专注于会告诉您某些事情正在发生的迹象。这里的问题是 Parallel.ForEach 一发现异常就停止处理,而您期望它处理所有项目。你的 JustMock 没问题。使用正常的 foreach 应该可以解决这个问题。如果您有理由使用 Parallel.Foreach,请尝试在此处捕获所有异常触发。