Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-棱镜(CAL)-自动功能测试_C#_Wpf_Integration Testing_Automated Tests_Prism 2 - Fatal编程技术网

C# WPF-棱镜(CAL)-自动功能测试

C# WPF-棱镜(CAL)-自动功能测试,c#,wpf,integration-testing,automated-tests,prism-2,C#,Wpf,Integration Testing,Automated Tests,Prism 2,我现在是一个一年前开始的项目的新手 该项目使用C#、WPF、PRISM(CAL)、实体框架、LINQ等。应用程序使用MVVM模式完成 有一些单元测试,但我被要求做功能测试,因为大多数错误是在一起使用所有组件时发现的 我开始做一个MSTEST项目。我的目标是启动整个应用程序后端(model和viewmodel),模拟UI事件并检查访问一个或多个viewmodel属性的模型修改 我的第一个客户是创建实体上下文(模型),初始化所有PRISM模块,并开始在视图模型中发布事件,以修改我的模型,并在相同或其

我现在是一个一年前开始的项目的新手

该项目使用C#、WPF、PRISM(CAL)、实体框架、LINQ等。应用程序使用MVVM模式完成

有一些单元测试,但我被要求做功能测试,因为大多数错误是在一起使用所有组件时发现的

我开始做一个MSTEST项目。我的目标是启动整个应用程序后端(model和viewmodel),模拟UI事件并检查访问一个或多个viewmodel属性的模型修改

我的第一个客户是创建实体上下文(模型),初始化所有PRISM模块,并开始在视图模型中发布事件,以修改我的模型,并在相同或其他视图模型中检查结果。我必须:

  • 重写prism Boostrapper类
  • 创建一个简单的应用程序(因为在MSTEST下
    System.Windows.Application.Current
    为空)。我刚刚从
    System.Windows.Application
    派生了一个类
我可以使用UnityContainer访问我的所有接口实现。我现在的问题是,
IEventAggregator
不工作。事件不会被触发。我不想模拟事件聚合器,因为我希望它在prism模块之间触发我的事件(我正在进行功能测试,而不是单元测试)

我找到了一种方法,通过玩
Dispatcher
DispatcherFrame
使其工作,但我在
区域管理器中得到了似乎失败的股票


我的问题是:有没有更好的方法来进行功能/集成测试而不必显示用户界面?

如果您正在进行功能测试,您应该希望显示用户界面。例如,如果某个ui设计师决定将文本框放在复选框的顶部,而您不能再单击该复选框,则需要在功能测试中选择该复选框


因为您已经在VisualStudio中编写了UI测试,所以您将遇到WPF的一些问题,主要是在编写的UI映射中无法轻松访问的控件。但除此之外,它工作良好,易于构建测试,并且与TFS构建代理和MSBuild集成良好。

我的应用程序是使用MVVM和PRISM构建的。MVVM告诉我们,所有的逻辑都在ViewModel中,而不是视图中,因此在不显示视图的情况下(只需在ViewModel上执行操作),就可以轻松地进行自动功能测试。使用棱镜不应该(按照我的说法)使这不可能做到!