silverlight - 第一次单元测试(在 Silverlight 中)

标签 silverlight unit-testing

嗨,我搜索了其他一些帖子,但大多数人认为人们知道他们在单元测试中做了什么,坦率地说我不知道​​。我看到了单元测试背后的想法,我现在正在盲目地编写一个 Silverlight 应用程序,我想编写一些单元测试以确保我走在正确的道路上。我希望能够使用 SL4 vs 2010 silverlight 单元测试项目模板,以保持简单且不使用外部工具。所以我需要回答的问题是:

单元测试的方法有哪些?
单元测试和自动化单元测试有什么区别?
如何在 Silverlight 中进行有意义的单元测试?
单元测试(在 Silverlight 中)时我应该注意什么?

我还应该在我的 silverlight 应用程序中实现某种 IRepository 模式以使单元测试更容易吗?

编辑:

我将在这里发布有用的链接,因为我会一路探索:

在 silverlight 中实现 MVVM - http://community.infragistics.com/pixel8/media/p/91949.aspx

Mix10 MVVM 演讲 - http://live.visitmix.com/MIX10/Sessions/EX14

单元测试 Ria 应用程序 - http://blogs.msdn.com/b/vijayu/archive/2009/06/08/unit-testing-business-logic-in-net-ria-services.aspx

PK大资源:http://dotenetscribbles.blogspot.com/2009/12/unit-testing-dependency-injection-and.html

最佳答案

我从未使用过silverlight 单元测试项目模板。我只使用 nunit 在 Silverlight 中进行单元测试。所以,我将把它留给其他人来回答。
至于您的其他问题:

单元测试应该驱动你的设计。您的单元测试是您的代码的第一批用户。您的代码基于一些期望,单元测试验证是否满足期望。使用 MVVM 模式(就像您使用 silverlight 一样)有助于单元测试。要记住的最重要的事情是您必须编写可测试的代码。而要编写可测试的代码,最重要的是要记住注入(inject)依赖项。例如,如果您的代码调用 db.您不能让单元测试调用数据库。相反,您将模拟您的数据访问层。这就是模拟和 stub 等概念出现的地方。我在我的 sivlerlight 单元测试中使用 moq 进行模拟。我认为有助于单元测试的另一件重要的事情是单一责任原则。最后,将您的测试代码视为生产代码,否则您的测试可能会给您一个错误的概念,即期望得到满足。您的单元测试是代码,因此可能存在错误。

what are the differences between unit tests, and automated unit tests?



我不太清楚你的意思是什么。单元测试是白盒测试的一种自动化方式。每次 checkin 存储库中的任何代码时,您都可以拥有运行所有单元测试的脚本。这可以是持续集成的一部分。

How do I meaningfully unit test in silverlight



在 silverlight 中,为了方便测试,您应该使用命令,而不是在代码隐藏文件中编写代码。这允许您在单元测试时模拟按钮单击和其他 GUI 事件。使用 MVVM 模式和命令,您可以测试所有 C# 代码(不是 xaml),直到 UI(转换器、VM 等)。

在这个答案中很难提及所有内容。我建议,你用谷歌搜索 MVVM,Silverlight 中的命令,Martin fowler - 模拟不是 stub ,silverlight 的模拟框架,依赖注入(inject)

关于silverlight - 第一次单元测试(在 Silverlight 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993619/

相关文章:

java - 调用 java.util.Random 的应用程序单元测试的最佳策略

silverlight - 为什么开发人员会使用 Silverlight?

silverlight - 在 silverlight 中验证颜色

silverlight - 如何为 silverlight Canvas 设置背景?

c# - 如何将参数发送到 ICommand 的 Execute 方法

scala - Akka 的 mock child Actor

c# - 如何模拟输入异常的函数?

php - 绑定(bind)到实现细节的数据库单元测试

c# - 如何使用此策略更改 Silverlight 应用程序的 URL?

java - 使用 gradle 使用外部参数运行 JUnit 测试