我有一堆单元测试可以在一个异步执行某些任务的类上运行。目前我设置了类,然后执行有问题的功能。然后我进入阻塞等待直到执行完成,然后测试我需要的数据。我有更好的办法吗?
到目前为止,我的测试看起来与此相似:
vp.Reset(); //vp is my virtual machine
bool wait = true;
Dictionary<short, Command> commands = new Dictionary<short, Command>();
commands.Add(0, CommandFactory.CreateInputCommand(0, 0));
commands.Add(1, CommandFactory.CreateHaltCommand());
vp.OnHalted += () =>
{
wait = false;
};
vp.InputChannels[0] = () => { return 2; };
vp.CurrentProgram = commands;
vp.ExecuteTillHalt();//asynchronous execution of program. There's also a way to make it execute synchronously
while (wait) ;
Assert.AreEqual(vp.Registers[0], 2);
答案 0 :(得分:2)
我看到两个测试,一个用于测试是否启动了异步操作(可以通过模拟完成),第二个用于测试运行时异步运行的操作是否正确执行,您可以同步执行后者。
答案 1 :(得分:0)
有没有办法将其分解为两个测试?
您可以通过块测试异步方面,然后将数据作为单独的可测试函数进行测试,该函数不依赖于它的调用方式。