У меня есть куча модульных тестов, которые работают с классом, который выполняет некоторые задачи асинхронно. В настоящее время я настраиваю класс, затем выполняю соответствующую функцию. Затем я вхожу в ожидание блокировки, пока выполнение не будет завершено, затем проверяю данные, которые мне нужны. Есть ли лучший способ, которым я могу это сделать?
Пока мои тесты выглядят примерно так:
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);