我一直在解决这个问题 - 不幸 - 使用事件少。然而这一次我想出了一个漂亮的窍门,但是我不认为以下将被认为是一个合适的方法。有没有推荐的方法来实现相同的结果?NUnit测试事件参数数据
NB没有而你会在_args.Fixture上得到一个空引用异常,除非你在它上面有断点 - 竞争条件。
private Parser _parser;
private ParsedArgs _args;
[TestFixtureSetUp]
public void Setup()
{
_parser = new Parser();
_parser.DataParsed += DataParsed;
}
void DataParsed(object sender, ParsedArgs e)
{
_args = e;
}
[Test]
public void TestDocParse()
{
_parser.ParseFixture(File.ReadAllText(EventDataPath));
while (_args == null || _args.Fixture == null) { }
Assert.IsNotNull(_args.Fixture);
var fixture = _args.Fixture;
Assert.AreEqual("2F7PY1662477", fixture.Id);
}
我发现the following导致不得不想出一个解析已经完成了一个潜在的不准确的时间表......
我的目标,以测试该fixture.Id等于“2F7PY1662477” 。
谢谢
我会用'System.Threading.SpinWait.SpinUntil(()=> _args = NULL && _args.Fixture = NULL,30000!);'为一体,只是为了确保您的测试永远不会陷入循环。你也可以使用自动重置事件,或类似的东西。 – vcsjones 2012-07-10 17:30:25
这里有几件事。其中之一是,当然,你在“旋转”等待解析器完成。和两个,这不仅是测试解析器,还测试事件。测试有点没有意义,因为你永远不会完成while循环并测试_args.Fixture不为null。 – 2012-07-10 18:04:31
Nah它确实有效......我只是意识到陷入循环。你提出了我实际上测试两个部分的进一步问题。 – 2012-07-11 09:00:41