并行单元测试.Foreach c#

本文关键字:Foreach 单元测试 并行 | 更新日期: 2023-09-27 18:04:11

我一直在c#中使用JustMock进行单元测试。我面临的问题是我不能断言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的错误行为吗?

并行单元测试.Foreach c#

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