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