java - junit 没有任何模拟框架

标签 java unit-testing

假设我有一个类的方法:

public String method1(someparameters) {
       //Calls methods of a different objects
       result2 = object2.method2(someparams )
       result3 = object3.method3(someparams)
       // Does bunch of work in method1
       ...................
       ...................
       return result
 }

object2.method2object3.method3 不需要被模拟。 换句话说,如果传递了正确的参数,它们就可以完成工作并返回结果。我的问题:在为 method1 编写单元测试时,我是否强制需要模拟 object2 和 object3 的调用?换句话说,在单元测试中是否必须进行模拟?

最佳答案

不,使用模拟框架不是强制性的,但可能会更方便。无论如何,最好的方法是将 object2 和 object3 作为接口(interface),并通过类的构造函数设置它们的实现。通过这种方式,您可以将简单的 stub 实现用于测试目的。接口(interface)中的方法过多就是要考虑是否违反了单一责任原则。

关于java - junit 没有任何模拟框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183556/

相关文章:

java - 下载 OpenCV Manager 后尝试在 android 上运行 OpenCV 时未发现非 native OpenCV 库包错误

java - 使用 apache camel 的 camel-kafka 组件手动提交消费者偏移量

javascript - Sinon.js stub 对象内部的匿名函数

javascript - 带有 preventDefault 的 React/Unit Test (Jest) 单击方法

java - 在 session 超时时设置 Liferay Hook

java - 如何从我在运行时使用 ASM 动态创建的 Java 类中获取和使用类类型?

python - 与 pytest.raises(Exception) 不适用于 Flask app.post

unit-testing - 设计一个健壮的单元测试——以几种不同的方式测试相同的逻辑?

java - PDFBOX : U+000A ('controlLF' ) is not available in this font Helvetica encoding: WinAnsiEncoding

python - 如何对带有 for 循环的函数进行单元测试?