Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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 UI自动化与.NET 4.5、Prism和MVVM以及Click Once应用程序,便于非开发人员使用_C#_.net_Wpf_Mvvm_Ui Automation - Fatal编程技术网

C# WPF UI自动化与.NET 4.5、Prism和MVVM以及Click Once应用程序,便于非开发人员使用

C# WPF UI自动化与.NET 4.5、Prism和MVVM以及Click Once应用程序,便于非开发人员使用,c#,.net,wpf,mvvm,ui-automation,C#,.net,Wpf,Mvvm,Ui Automation,我已经搜索并尝试了一些东西,即此线程: 我尝试过开始使用Systems.Windows.Automation和TestAutomationFX(第三方工具)。我的观点是,虽然测试自动化对简单的事情很有用,但当它降低了多个UI级别(加载的程序集中的usercontrol中的usercontrol)时,我可能不得不手动调整它们的代码以获得我想要的东西。System.Windows.Automation似乎很旧,我必须手动完成所有操作,这可能需要比我想投入更多的时间,因为我没有全职从事自动化创建。我

我已经搜索并尝试了一些东西,即此线程:

我尝试过开始使用Systems.Windows.Automation和TestAutomationFX(第三方工具)。我的观点是,虽然测试自动化对简单的事情很有用,但当它降低了多个UI级别(加载的程序集中的usercontrol中的usercontrol)时,我可能不得不手动调整它们的代码以获得我想要的东西。System.Windows.Automation似乎很旧,我必须手动完成所有操作,这可能需要比我想投入更多的时间,因为我没有全职从事自动化创建。我还从Windows SDK for Windows 7下载了Inspect.exe,它非常适合在我的UI中反映对象。这两个测试人员都能很好地运行简单的代码,但当它向下运行几层时,似乎有点复杂。我还打算在GitHub上尝试“TestSTack/White”,它是从原来的Project White迁移而来的

我很好奇最近是否有人有UI自动化方面的经验,非开发人员可以在QA职位上使用。我曾考虑购买VS2013测试版,但从我所看到的情况来看,这似乎有点过头了,而且比VS2013专业版花费更多。基本上,这不是负载测试或详细的复杂动态实体结果更改,只是功能测试,希望能运行十次左右的不同变量。这只是一个更加混乱的布局,因为我们正在将Prism方法Microsoft.Practices.Prism与MVVM结合起来

我不介意在VS 2013和.NET 4.5中开发一些东西,但我希望得到一些东西,我不是为了开发一整套其他项目,而是为了节省时间。在单元测试项目中,我是一个极端的noob,但最终目标是:

  • 为非开发人员提供一个exe或一些环境,以便自动运行一个单击一次的UI,该UI是按照一些Prism和MVVM架构用WPF编写的

  • 希望有某种类型的CSV、config或其他方法,他可以更改变量来运行某些测试

  • 能够以配置或可更改的方式输入click once应用程序的exe(在我打开任务管理器,然后打开click once应用程序的“打开位置”的经验中,click once很有趣,这在不同的框中是不同的)


  • 这可能有很多要求,或者对于那些每天进行单元测试的人来说可能很简单,我不知道。我准备尝试第三方产品,非.NET产品来运行.NET,用C#in VS编码来创建一个项目来运行我的UI(只要它可以在没有VS的盒子上运行)。

    理想情况下,您根本不需要进行很多UI测试——应用程序的大部分逻辑应该通过单元测试来测试。使用MVVM,您可以轻松地测试viewmodel,以确保按钮在本应处于禁用/启用状态时处于禁用/启用状态,等等

    通过UI测试您的核心业务逻辑是一个灾难。不要这样做。UI测试非常脆弱,如果UI发生重大变化,往往需要重新记录或更新。如果您的测试失败的原因与您试图测试的核心逻辑无关,那么您就不太容易相信测试验证了他们应该验证的内容。如果您不信任这些测试,您将开始忽略失败。“哦,这个测试有时会失败,这没什么大不了的。”如果你不能相信你的测试在100%的时间里都是准确的,为什么还要费心做这个测试呢

    因此,您希望通过UI测试工具测试的是UI的最顶层,以确保viewmodel正确绑定到视图。这可以归结为,实际上,只是一些测试。为此,您可以轻松地使用。棘手的部分是确保所有控件都是自动化友好的,这确实涉及到给控件指定专有名称,并确保将正确的自动化属性附加到控件

    编码UI在VS Premium及更高版本中可用,您不需要使用Microsoft测试管理器来管理和运行测试,尽管它肯定更容易


    听起来你真正想要的是MTM。您希望手动测试人员能够通过与您的应用程序交互来记录测试,然后稍后再播放它们。这正是MTM的设计宗旨,也是它的卓越之处。

    遗憾的是,这个答案对于您所处的阶段来说似乎太晚了,但我对MVVM Light Toolkit的基本功能感到满意:

    基本上,您可以从设置一些IOC容器、依赖项注入方案和PRISM开始。然后,您的服务可以通过模拟等方式提供设计时、运行时和测试时实现。有一些视频和教程,但与大多数wpf一样,作为新手,很难对过时的东西和相关的最佳实践进行分类

    MVVM Light至少专注于让Blend在设计时工作,闻起来像某种最佳实践


    现在让我们来看看这一点并不能很好地回答您的问题:我们的想法是能够在Blend中进行布局,这样您就可以在没有无休止的调整编译运行周期的情况下看到事情的样子。测试纯粹是在底层的ViewModel和Model上进行的。然后,您可以告诉我们,该应用程序可以工作,因为UI绑定不太可能出错/手动运行和验证相对简单。最后一部分对我的项目有效,但可能对你的项目非常不满意。

    请告诉我为什么这部分被否决?老实说,UI自动化是编码的重要组成部分,至少可以说,在没有评论的情况下获得否决票是相当势利的。我已经提供了我所做的,我想要完成的,我想要的。如果这不符合模型,告诉我为什么或者是否应该移动它。我最好的猜测是:文本墙。我实际上已经读了整个问题,我认为你问的很清楚,所以你有我的+1。我很想知道这是怎么回事