测试使用异步执行的类

时间:2009-10-05 01:58:08

标签: unit-testing asynchronous

我有一堆单元测试可以在一个异步执行某些任务的类上运行。目前我设置了类,然后执行有问题的功能。然后我进入阻塞等待直到执行完成,然后测试我需要的数据。我有更好的办法吗?

到目前为止,我的测试看起来与此相似:

    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);

2 个答案:

答案 0 :(得分:2)

我看到两个测试,一个用于测试是否启动了异步操作(可以通过模拟完成),第二个用于测试运行时异步运行的操作是否正确执行,您可以同步执行后者。

答案 1 :(得分:0)

有没有办法将其分解为两个测试?

您可以通过块测试异步方面,然后将数据作为单独的可测试函数进行测试,该函数不依赖于它的调用方式。