TECHTOGOU

java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?

我有一个表示图像的类:它称为Photography。构造函数如下所示:Photography::Photography(QStringoriginalPath,QStringappDirectory){this.originalPath=originalPath;this.appDirectory=appDirectory;}该类包含许多方法,如getTitle()、getCaption()、getSize()、isHorizo​​ntal()等有一个名为getThumbnailPath()的public方法,如下所示:QStringPhotography::getThumbnailP

java - 具有继承和混合的 Scala 可测试代码

我用Java开发了很多代码,并涉足Groovy和Haskell,现在这让我转向了Scala。我对Scala的功能方面感觉相对舒服,但我发现自己在Scala中的面向对象设计方面有点不稳定,因为它感觉与Java有点不同,特别是由于特征/混合。我的目标是编写尽可能可测试的代码,这在我的Java开发中一直转化为重点尽可能保持不变更喜欢通过构造函数注入(inject)状态总是寻求组合而不是继承(受thispostonSO的严重影响,并且可能对其react过度)现在我正试图在这个新的Scala领域站稳脚跟,但我很难弄清楚我应该在这里采用什么方法,特别是我是否应该开始对某些东西使用继承目的。Prog

java - 静态方法使 Java 成为一种伪函数式语言?

我一直在考虑postMiskoHevery认为Java中的静态方法可测试性已死。我不想讨论可测试性问题,而是更多地讨论静态方法的概念。为什么人们如此讨厌它?的确,我们没有闭包(但我们有一个有点笨拙的匿名函数)、lambdas和作为一流对象的函数。在某种程度上,我认为静态方法可用于将函数模拟为一流对象。 最佳答案 函数式编程的一个特点是数据的不变性。static确实暗示您不需要表示状态的对象(实例),所以这不是一个糟糕的开始。但是,您在类级别上确实有状态,但是您可以将其设置为final。由于(静态)方法根本不是一等函数,您仍然需要像匿

Javascript 单元测试 - DOM 操作

我对Javacript单元测试还很陌生。一件事一直困扰着我。在测试javascript时,我们经常需要进行DOM操作。看起来我正在对Controller/组件中的方法/函数进行单元测试,但我仍然需要依赖模板中的HTML元素。一旦更改了id(或在我的测试用例中用作选择器的属性),我的测试用例也需要更改!这不会违反单元测试的目的吗? 最佳答案 javascript单元测试中最困难的部分之一不是测试,而是学习如何构建代码以使其可测试。您需要通过明确分离可测试逻辑和DOM操作来构建代码。我的经验法则是:如果您正在测试任何依赖于DOM结构的东

c# - 仅可测试性就可以证明依赖注入(inject)的合理性吗?

DI的优点,据我所知有:减少依赖更多可重用代码更多可测试代码更具可读性的代码假设我有一个存储库OrderRepository,它充当通过LinqtoSqldbml生成的订单对象的存储库。我无法使我的订单存储库通用,因为它执行LinqOrder实体和我自己的OrderPOCO域类之间的映射。由于OrderRepository必然依赖于特定的LinqtoSqlDataContext,因此不能真正说DataContext的参数传递可以使代码可重用或以任何有意义的方式减少依赖性。这也使代码更难阅读,至于实例化我现在需要编写的存储库newOrdersRepository(newMyLinqDat

c# - 静态方法的函数式编程建议如何影响可测试性?

随着我对函数式编程的深入研究,我阅读了支持静态方法而不是非静态方法的建议。例如,您可以在本书中阅读该建议:http://www.amazon.de/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588当然,如果您考虑功能纯度,那是有道理的。一个静态函数站在那里说:“我不需要任何状态!”但是,这对可测试性有何影响?我的意思是,具有大量静态方法的系统不是很难测试吗(因为静态方法很难模拟)?或者模拟在函数式编程中扮演次要角色,如果是:为什么?编辑因为有人怀疑这本书是否真的提出了那个建议。我会多引用一点。我希望O

c# - 我怎样才能将这个工厂类型的方法和数据库调用重构为可测试的?

我正在努力学习如何进行单元测试和模拟。我了解TDD和基本测试的一些原理。但是,我正在考虑重构以下未经测试编写的代码,并试图了解它需要如何更改才能使其可测试。publicclassAgentRepository{publicAgentSelect(intagentId){Agenttmp=null;using(IDataReaderagentInformation=GetAgentFromDatabase(agentId)){if(agentInformation.Read()){tmp=newAgent();tmp.AgentId=int.Parse(agentInformation[

c# - 在没有 OperationContext 的情况下创建可测试的 WCF 服务

我已经实现了一个订阅/发布(为了我自己的乐趣)WCF服务,它工作得相当好。就像我看到的所有博客和书籍一样,它们都使用OperationContext来获取客户端回调地址。阅读了一下,由于很多人说不要使用OperationContext,我发现自己无法创建适当的单元测试。但是我一直找不到替代方案。我想subscribe方法可以接受一个参数来提供自己的地址?从集成测试的角度来看,我可以看到代码是可测试的,但不能用于单元测试,因为OperationContext始终为null。在不使用OperationContext订阅我的服务时,如何获取客户端端点?顺便提一下,在展示代码示例时,考虑到测试

C# WebApi 单元测试和模拟 Controller

我正在处理这个WebAPI项目,我需要为其创建单元测试。该项目的基础是使用VS2010创建的,然后添加了一个WebApi模块。Controller的工作有点妨碍测试/模拟。我正在使用xUnit和Moq,但绝对没有必要坚持使用这两个。应用程序使用特定的对象来处理数据库访问,所以我有controllerObject及其构造函数需要DataAccessObject我在模拟Controller/数据访问对时遇到问题。我尝试运行的第一个测试是GetAllFromDataBase,但我真的不知道如何去做。编辑:我按照CuongLe告诉我的去做了,现在一切都在进行中,我真的很感激。但我遇到了另一个问

javascript - 如何编写可测试的 requirejs 模块

我是单元测试的新手,所以我可能遗漏了一些东西,但我应该如何构建requirejs模块以使它们完全可测试?考虑优雅的显示模块模式。define([],function(){"usestrict";varfunc1=function(){vardata=func2();};varfunc2=function(){returndb.call();};return{func1:func1}});据我所知,这是构建requirejs模块的最常见模式。如果我错了请纠正我!因此,在这个简单的场景中,我可以轻松地测试func1的返回值和行为,因为它是全局的。但是,为了测试func2我还