我想为我的ViewModel类中的一些命令编写一些单元测试。我想测试ICommand的执行情况。
我的ICommand.Execute()方法执行异步方法。
如何为该命令编写测试用例?
注意:我正在使用在Visual的CTP2中交付的Windows单元测试框架,更新2 http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/31/windows-phone-unit-tests-in-visual-studio-2012-update-2.aspx
发布于 2013-02-13 15:08:52
测试async Task方法要容易得多;也就是说,让您的async void Execute实现只是await一个async Task方法,它实际上是经过单元测试的方法。
内置的MSTest单元测试框架不支持测试async void方法,因为它有点复杂,会引起向后兼容性问题。目前,NUnit是唯一支持async void方法的单元测试框架。
如果您真的想测试async void方法而不想使用NUnit,您可以使用AsyncPump或AsyncContext (在NuGet上可用)为每个单元测试创建您自己的上下文。在这种情况下,您的测试将类似于:
[TestMethod]
public void TestMyAsyncVoidMethod()
{
ICommand myCommand = ...;
AsyncContext.Run(() =>
{
myCommand.Execute();
Assert.IsTrue(command-is-in-progress);
});
Assert.IsTrue(command-completed);
}发布于 2013-02-13 11:37:23
我假设您使用[Asynchronous]属性标记该方法,然后只需调用await ICommand.Execute()
检查这个职位以获得异步Windows方法测试的示例。
发布于 2014-10-01 14:08:13
应该将测试方法签名更改为
[TestMethod] public async Task TestMyAsyncVoidMethod() {....
以便您可以等待命令执行方法。
https://stackoverflow.com/questions/14829273
复制相似问题