假设我要在有这个俄罗斯方块游戏的地方进行单元测试,并且想开始游戏,什么也不做,然后等待游戏结束(这是为了获得GameOver事件):

Tetris tetris = new Tetris();
tetris.GameOver += something;
tetris.Start();


我应该如何进行测试?这可能很容易,但是我看不到该怎么做。
我唯一的想法是以下形式:

Tetris tetris = new Tetris();
tetris.GameOver += delegate() { Assert.True(); };
tetris.Start();


谢谢

最佳答案

假设tetris.Start()是同步的,则可以使用事件处理程序向测试发出信号:

Tetris tetris = new Tetris();
bool wasRaised = false;
tetris.GameOver += delegate() { wasRaised = true; };
tetris.Start();
Assert.IsTrue(wasRaised);


如果调用是异步的,则必须同步该调用才能在测试上下文中到达Assert

09-25 16:24