237得票19回答
如何测试调用System.exit()的方法?

我有几个方法应该在特定输入上调用System.exit()。不幸的是,测试这些情况会导致JUnit终止!将方法调用放入新线程似乎没有帮助,因为System.exit()终止JVM,而不仅仅是当前线程。有没有常见的处理方法?例如,我可以替换System.exit()的存根吗? 涉及的类实际上是...

32得票6回答
继承与组合对于可测试性的影响

在设计我的对象时,我发现从可测试性的角度来看,组合更好。原因是,如果需要在运行单元测试时模拟组成结构的某些部分,则可以使用组合,而如果使用继承层次结构,则无法实现此功能。 我想知道是否还有其他人发现这也是更喜欢使用组合的原因。另外,您因为使用继承而遇到了哪些可测试性问题?

15得票4回答
扩展方法是否隐藏依赖关系?

大家好, 我想听听大家对此的想法。最近在设计/开发中,我越来越倾向于遵循“纯粹主义”DI/IOC原则。其中一部分(很重要的一部分)是确保我的类之间耦合度较低,并且它们的依赖项由构造函数解决(当然还有其他管理这种依赖关系的方法,但您懂得的)。 我的基本前提是扩展方法违反了DI/IOC的原则。...

11得票2回答
用继承和混合编写可测试的Scala代码

我用Java开发了很多代码,并尝试使用Groovy和Haskell, 这让我接触到了Scala。 我在Scala的函数式方面感觉比较熟练,但是对象导向设计上感觉有些不稳定,因为它与Java有所不同,特别是由于traits/mix-ins的存在。 我的目标是编写尽可能易于测试的代码,在我的J...

11得票4回答
使C++代码易于测试的模式

你是否应该设计你的代码以使测试更容易?如果是这样,如何设计 c++ 代码以便于测试。 如何在 c++ 中使用依赖注入? 我是否应该使用纯接口类作为基类来实现类,以简化创建假测试对象的过程? 这会迫使我编写很多虚拟方法。这会影响性能吗? 在为 c++ 设计可测试性时,还应考虑什么?

10得票2回答
Scala:如何测试调用System.exit()的方法?

我一直在开发一个命令行工具,它在特定输入时调用 System.exit() (不想使用异常)。 我熟悉 Java:如何测试调用 System.exit() 的方法?及其最优雅的 方法。 不幸的是,这并不够纯粹,因为我不得不添加依赖项到 system-rules,junit-interfac...

8得票2回答
在Windows客户端(WPF)应用程序中实现依赖注入的正确方法

我习惯在Web应用程序中使用IoC/DI - 主要是Ninject与MVC3一起使用。我的控制器已经为我创建,所有依赖项都已就位,包括子依赖项等。 然而,在厚客户端应用程序中情况不同。我必须创建自己的对象,或者我必须回到服务定位器样式的方法,其中我通过某个接口(可能是为了可测试性)要求内核给...

8得票3回答
静态类是否应该避免使用,因为它会使依赖注入变得困难?

有人被赋予创建“核心”库的任务,他们创建了一组静态类,提供各种实用程序,包括日志记录、审计和常见的数据库访问方法。 我个人认为这很糟糕,因为现在我们有了一组难以测试的核心库,因为我无法模拟/存根这些类或将其注入构造函数中。 我想我可以使用TypeMock来存根它们,但我宁愿免费做到这一点。...

8得票1回答
Node.js:导出类/原型与实例的区别

由于我大部分的编程工作都是用Java进行的,因此我觉得将一个类导出为Node.js模块比将对象实例导出更具吸引力,例如: class Connection { constructor(db) { this.db = db; } connect(conn...

7得票2回答
在React/Redux应用程序中,一个人应该把服务实例放在哪里?

假设我正在使用Redux编写应用程序,并被要求使用第三方库添加日志记录。它的API如下: function createLogger(token) { // the logger has internal state! let logCount = 0; retur...