首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试Windows 8 MVVM异步命令?

如何测试Windows 8 MVVM异步命令?
EN

Stack Overflow用户
提问于 2013-02-12 09:27:11
回答 3查看 1K关注 0票数 1

我想为我的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

EN

回答 3

Stack Overflow用户

发布于 2013-02-13 15:08:52

测试async Task方法要容易得多;也就是说,让您的async void Execute实现只是await一个async Task方法,它实际上是经过单元测试的方法。

内置的MSTest单元测试框架不支持测试async void方法,因为它有点复杂,会引起向后兼容性问题。目前,NUnit是唯一支持async void方法的单元测试框架。

如果您真的想测试async void方法而不想使用NUnit,您可以使用AsyncPumpAsyncContext (在NuGet上可用)为每个单元测试创建您自己的上下文。在这种情况下,您的测试将类似于:

代码语言:javascript
复制
[TestMethod]
public void TestMyAsyncVoidMethod()
{
  ICommand myCommand = ...;

  AsyncContext.Run(() =>
  {
    myCommand.Execute();
    Assert.IsTrue(command-is-in-progress);
  });

  Assert.IsTrue(command-completed);
}
票数 2
EN

Stack Overflow用户

发布于 2013-02-13 11:37:23

我假设您使用[Asynchronous]属性标记该方法,然后只需调用await ICommand.Execute()

检查这个职位以获得异步Windows方法测试的示例。

票数 0
EN

Stack Overflow用户

发布于 2014-10-01 14:08:13

应该将测试方法签名更改为

[TestMethod] public async Task TestMyAsyncVoidMethod() {....

以便您可以等待命令执行方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14829273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档