2016-08-26 66 views
8

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

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的一些错误行为吗?

+2

对Telerik Helpdesk问这个问题不是更有意义吗? – lokusking

+0

你做了什么其他测试? – Neil

+0

尝试删除并行,只是做一个正常的foreach。 –

回答

3

在进行并行处理时,您不能轻易认定某件事情将会发生或将不会发生,这就是更难做到的事情。相反,你专注于会告诉你某些事情正在发挥作用的迹象。这里的问题是Parallel.ForEach在发现异常时立即停止处理,而您期待它处理所有项目。没有什么是你的JustMock错。使用正常的foreach应该可以解决此问题。如果您有理由使用Parallel.Foreach,请尝试在此处捕获异常火警。