일부 작업을 비동기 적으로 실행하는 클래스에서 작동하는 단위 테스트가 많이 있습니다. 현재 클래스를 설정 한 다음 문제의 함수를 실행합니다. 그런 다음 실행이 완료 될 때까지 차단 대기로 이동 한 다음 필요한 데이터를 테스트합니다. 내가 할 수있는 더 좋은 방법이 있니?비동기 실행을 사용하는 클래스 테스트
는지금까지 내 테스트는 여기에 유사 :
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);
어떤 일이 발생합니까? 반복 타이머를 통해 비동기 적으로 코드를 실행하는 가상 프로세서가 있으며 실행이 완료되면 해제됩니다. 간단한 프로그램을 작성하고 가상 컴퓨터를 한 번에 하나씩로드 한 다음 비동기 실행을 실행하고 결과를 테스트하여 내 프로세서 세트의 특정 측면을 테스트하고 있습니다. 나는 그것이 synchronusly 실행하고 별도의 테스트로 asynchronus 부분 밖으로 분리 강제로 수도 ... – RCIX
그건 당신의 타이밍 루프가 당신의 구성을 변경 (일종의)에 의해 변경되어야하므로 귀하의 테스트 속도를 것입니다. –