10 c# silverlight nunit moq
我正在尝试对Silverlight 3项目进行单元测试.我在用:
当我编写一个不使用Moq的测试时,它可以正常工作.
当我在测试之外使用Moq时,Moq可以正常工作.(我嘲笑了一个界面并在按钮处理程序中进行了验证作为证明.)
但是当我运行使用Moq的单元测试时,我总是这样:
System.IO.FileNotFoundException: Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.
at Moq.ExpressionExtensions.ToStringFixVisitor..ctor(Expression expression)
at Moq.Interceptor.AddCall(IProxyCall call, SetupKind kind) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Interceptor.cs: line 104
at Moq.Mock.<>c__DisplayClassc`2.<Setup>b__b() in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.cs: line 387
at Moq.PexProtector.Invoke<T>(Func`1 function) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\PexProtector.cs: line 17
at Moq.Mock.Setup<T1,TResult>(Mock mock, Expression`1 expression) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.cs: line 371
at Moq.Mock`1.Setup<TResult>(Expression`1 expression) in c:\Build\Moq Drop\moq\WorkingDirectory\trunk\Source\Mock.Generic.cs: line 194
at SilverlightMoq.Test1.TestFirst() in Test1.cs: line 23
Run Code Online (Sandbox Code Playgroud)
怎么修好?
我为SL 3重建了两个组件,结果相同.
我能够在Microsoft Silverlight单元测试框架上运行测试.
http://code.msdn.microsoft.com/silverlightut/
这是浏览器中的测试框架,似乎是单元测试SL的标准方法.问题是:
它非常慢.
(比在nunit测试框架中运行的相同测试慢〜5倍)
有没有人知道任何其他SL测试框架或更好的方法来运行针对此框架的测试?
当我尝试使用TestDriven.Net的vs插件时,我收到一个错误:
System.IO.FileNotFoundException:无法加载文件或程序集'系统,...
感谢Lee提供的信息,以及他提供的链接(http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx),我得到了我的Silverlight NUnit使用代码覆盖在Hudson中运行的测试!太棒了!嘿!而且他们也和ReSharper一起运行,所以我觉得我不再受到惩罚(延迟20秒)在Silverlight中做TDD.
那么,我到底做了什么?
我为SL3制作了一个Silverlight单元测试框架项目:
然后我将所有测试项目的Silverlight程序集的引用(除了'mscorlib')更改为'Copy Local:True',如下所述:
(http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx)
然后我添加了对以下博客中提供的Silverlight NUnit 2.5.1框架的引用(Jeff Willcox在我下面提到的博客中提供了其他版本,Jamie Cansdale在他的博客中提供了,但这是我发现的最新版本):
而已!之后我可以编写我的测试,在ReSharper和NUnit测试运行器中运行它们!另外,我可以使用ncover来获取报道!!!
编辑:哦,是的,如果你运行任何需要UI线程的测试,你将在ReSharper中得到一个跨线程错误.这可以通过在Deployment.Current.Dispatcher.BeginInvoke(...)调用中执行这些测试来解决.
在使用我的测试单元之后,我无法从SL Test Framework Web界面运行它们,但这对我来说并不是一个问题.如果你确实需要这个工作,那么看看:
(http://www.jeff.wilcox.name/2009/01/nunit-and-silverlight/)
我也尝试过StatLight(http://statlight.codeplex.com/)从控制台运行测试,这对我来说效果很好,但我是ReSharper和NUnit粉丝,所以这对我来说不是最佳选择.StatLight还有一个奇怪的错误,它没有正确加载我的测试项目资源,导致一些测试失败.
我希望这有助于某人.我没有在这里提出任何新内容,而是整合了我希望有人事先为我总结的所有信息.当我得到一些时间时,我将在与SilverLight 创建Habanero框架(http://www.habanerolabs.com)项目方面发表博客.
呼.这就是所有人!
小智 5
目前答案似乎是Jamie Cansdale的Silverlight Nunit项目模板:
http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx
这个模板太棒了,正是我想要的.它也适用于Resharper!我希望这能节省几个小时.
听起来像是 Silverlight 3 的问题。您可以获得 Moq.Silverlight 和 NUnitSilverlight 的源代码并在 silverlight 3 二进制文件上构建它们吗?这些似乎是用 SL 2 构建的。
| 归档时间: |
|
| 查看次数: |
6693 次 |
| 最近记录: |