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

第一次单元测试(在silverlight中),silverlight,unit-testing,Silverlight,Unit Testing,嗨,我搜索过其他一些帖子,但大多数人都认为人们知道他们在单元测试中做了什么,坦率地说,我不知道。我看到了单元测试背后的想法,现在我正在盲目编写silverlight应用程序,我想写一些单元测试来确保我走上了正确的道路。我希望能够使用SL4 vs 2010 silverlight单元测试项目模板,使其保持简单,而不使用外部工具。因此,我需要回答以下问题: 单元测试的方法是什么? 单元测试和自动化单元测试之间有什么区别? 如何在silverlight中进行有意义的单元测试? 在silverlight

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

单元测试的方法是什么? 单元测试和自动化单元测试之间有什么区别? 如何在silverlight中进行有意义的单元测试? 在silverlight中进行单元测试时,我应该注意什么

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

编辑:

我将在这里发布有用的链接,以探索这一点:

在silverlight中实现MVVM-

Mix10 MVVM对话-

单元测试Ria应用程序-

PK的伟大资源:

我从未使用过silverlight单元测试项目模板。我只使用nunit在silverlight中进行单元测试。所以,我会让其他人来回答。 至于你的其他问题:

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

这两个单位有什么区别 测试和自动化单元测试

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

如何在中进行有意义的单元测试 银光

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


在这一个答案中很难提及所有内容。我建议,你用谷歌搜索MVVM,Silverlight中的命令,Martin fowler-mock不是存根,Silverlight的模拟框架,依赖注入。对于我们这些不知道如何处理单元测试的人来说,这是一个很好的问题。我希望你可以实现一些东西,而不必对应用程序进行剧烈的更改。i、 我看到了:public IQueryable GetAspnet_Users{return this.DataContext.aspnet_Users;},我注意到返回的是this.DataContext.aspnet_Users,那么有没有一种方法可以用某种模拟数据库切换出DataContext,然后在我的测试类中运行domainservice方法呢?我的意思是,在我未经训练的眼里,我会有这样的东西;MockDBStructure:IDBStructure难道不可能吗?@Jakob。模拟IDB结构实现是非常可能的。因此,我假设您正在接收作为依赖项的DataContext,或者通过ctor/property/method注入具有GetAspnet_Users实现的方法的类实例。@PK。目前,包含GetAspnet_Users方法的DomainService被定义为公共类DomainService:LinqToSqlDomainService,因此我不确定如何交换datacontext,以获得一些IRepository模式实现,以便于单元测试DomainService类应实现一些接口,比如IDomainService,它将作为客户的合同。它将有GetAspnet_用户之类的GetMethods。其他层中的类将有一个ctor参数,类似于OtherLayerDomainService{…}。当您在另一层中测试类时,必须模拟IDomainService并将该对象传递给下的类test@PK-谢谢你坚持不懈地回答我的问题:我一定没有得到什么。如果我必须模拟domainservice,我将不得不在mockdomainservice中编写 e只是与实际domainservice中的类似,而不是完全相同,这让我思考——除了mockdomainservice的输出之外,我测试的是什么。从我的角度来看,对本地数据库进行测试实际上比使用该解决方案更有吸引力,因为这样我至少可以测试真实的数据和真实的domainservice方法。你能推断出我没有得到什么吗?