首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MvcIntegrationTestFramework或针对ASP.NET MVC 3更新的替代方案

MvcIntegrationTestFramework或针对ASP.NET MVC 3更新的替代方案
EN

Stack Overflow用户
提问于 2010-11-25 23:52:40
回答 4查看 2.5K关注 0票数 18

我感兴趣的是使用Steve Sanderson的MvcIntegrationTestFramework 或非常类似的替代和ASP.NET MVC3Beta。

目前,在针对MVC3Beta编译MvcIntegrationTestFramework时,由于MVC中的更改,我得到了以下错误:

Error 6 'System.Web.Mvc.ActionDescriptor.GetFilters()' is obsolete: '"Please call System.Web.Mvc.FilterProviders.Providers.GetFilters() now."' \MvcIntegrationTestFramework\Interception\InterceptionFilterActionDescriptor.cs Line 18

问题

1.有没有人能提供ASP.NET MVC3Beta版的MvcIntegrationTestFramework?

-和/或--

2.你会推荐类似的替代方案吗?

编辑#1:备注我已经给MvcIntegrationTestFramework的创建者史蒂夫发了一封电子邮件,也希望能得到一些反馈。

编辑#2 & #3:我收到了史蒂夫的一条消息。引用供您参考:

我还不需要在MVC3中使用该项目,所以很抱歉,我没有它的更新版本。据我所知,应该可以更新它以在MVC3上工作,但您可能需要通过检查MVC3源代码来发现现在调用操作、过滤器等的任何变化。如果你更新了它,如果你决定采用它作为一个正在进行的项目(例如,把它放在Github或类似的),让我知道,我会发布一个链接到它!(谢谢Steve!)

编辑#4:老实说,曾快速尝试过使用System.Web.Mvc.FilterProviders.Providers.GetFilters(),但并没有很快取得任何进展,简单地添加[Obsolete]就会发现MVC请求的内部结构中有一个错误。还有没有人涉足过?

EDIT #5:如果您使用的是MVC3的替代集成测试框架,请发表评论。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-16 17:43:30

票数 9
EN

Stack Overflow用户

发布于 2010-12-17 02:53:25

我知道这不是您想要的答案,但是Selenium或Watin可能对您作为集成测试框架的替代方案有用。

Selenium将允许您将测试记录为nUnit代码,以便您可以与现有的测试项目等集成。然后,您的测试可以验证DOM,类似于集成测试框架。优点是Selenium测试可以在各种不同的浏览器上执行。

关键的警告是,Selenium需要将您的应用程序部署在web服务器上,不确定这是否会对您造成阻碍。

票数 4
EN

Stack Overflow用户

发布于 2012-12-15 13:11:50

我想我应该分享我在ASP.NET MVC4项目中使用MvcIntegrationTestFramework的经验。特别是,ASP.NET MVC4项目是Windows Azure Cloud Service的网络角色。

尽管Jon Canning的分支中的示例项目对我有效(尽管我确实将System.Web.Mvc程序集从3.0.0.0更改为4.0.0.0,这需要在web.config文件中进行大量编辑才能使测试运行和通过),但每当我尝试对ASP.NET Azure MVC4Web角色项目运行相同的测试时,我都会得到一个错误。错误是:

System.Reflection.TargetInvocationException:调用的目标引发了异常。

内部异常是:

System.InvalidOperationException:在应用程序的预启动初始化阶段不能调用此方法。

我开始想知道基于ASP.NET MVC4的Azure Web角色项目与普通的ASP.NET MVC4项目有什么不同,以及这种不同会如何导致这个错误。我在网上搜索了一下,但没有发现有人想做和我一样的事情。很快我就意识到这与Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener.有关。这个类的部分作用似乎是确保web角色在托管服务或Development Fabric中运行(如果您将启动项目从云服务项目切换到云服务解决方案中的web角色项目,然后尝试进行调试,您将看到一条关于此效果的消息)。

解决方案是什么?我从我的网络角色项目的Web.config文件中删除了相应的侦听器:

代码语言:javascript
复制
<configuration>
... 
  <system.diagnostics>
    <trace>
      <listeners>
        <!--Remove this next 'add' element-->
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      name="AzureDiagnostics"> <filter type="" /> </add> 
      </listeners>
    </trace>
  </system.diagnostics>
...
</configuration>

然后,我可以正常地对我的Web角色项目运行集成测试。但是,我将侦听器添加到Web.Debug.config和Web.Release.config转换文件中,以便正常部署和调试的一切仍然相同。

也许这会对那些希望使用MvcIntegrationTestFramework进行Azure开发的人有所帮助。

Azure编辑我刚刚意识到这个解决方案可能有点“黑客”,因为它可能不让你对与组件相关的应用程序代码进行集成测试(例如,可能是特殊的Azure缓存机制)。也就是说,我还没有遇到任何与此相关的问题,尽管我也还没有真正编写过很多集成测试……

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

https://stackoverflow.com/questions/4278790

复制
相关文章

相似问题

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