我正在使用 VS2012 为在方法上使用 async/await 模式的类编写单元测试。该类还有我想写入 TestContext 的事件,以便它们在测试输出中可见。我发现的问题是我的测试类中的事件处理程序方法没有被调用。测试通过但未调用负责 TestContext.WriteLine 的事件处理程序。这是代码。
[TestMethod]
public async Task Organize_Copy_No_Search_Pattern_Specified()
{
string result = null;
ClassToTest _classToTest = new ClassToTest(sourceFolder, destFolder);
_classToTest.OrganizerResult += _classToTest_Result;
CancellationToken cancellationToken = new CancellationToken();
result = await _classToTest._RunMethodAsync(cancellationToken);
int areSame = String.Compare(SuccessMsg, result, true);
Assert.AreEqual(0, areSame); // Passes
}
// This event handler never gets called?
void _classToTest_Result(string syncMessage)
{
string msg = syncMessage;
TestContext.WriteLine(msg);
}
private TestContext testContextInstance;
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}