当前位置: 首页 > 知识库问答 >
问题:

对将工作委托给其他人的类进行单元测试的最佳方式是什么?

督弘化
2023-03-14

我有一个关于如何最好地处理顶级类的JUnit测试的问题。假设我有一个类SomeWriter,它有一个方法来重新格式化字符串并将其写入流。该方法实际上并不执行工作,而是将其委托给一个实际执行实际工作的成员对象。我已经在下面的课上总结了这一点。

public class SomeWriter {
public void writeReformattedDataToStream(OutputStream outStream, String message) {
        myReformatter.DoTheActualWorkAndWriteDataToStream(outStream, message);
}
}

现在,在这个假设的示例中,我已经为myReformatter类编写了单元测试,并演示了myReformatter的工作原理。我的问题是,我应该如何处理writeReformattedDataToStream在某个Writer中的单元测试?

底线是,我对writeReformattedDataToStream的测试应该有效地重复对myReformatter的测试,还是模拟myReformatter,然后检查它是否被正确调用?

我意识到这类似于JUnit测试类调用其他类中的方法

共有1个答案

薛俊美
2023-03-14

像这样的即时委托通常属于“太简单而无法测试”的标题,但是如果您对此有一些绝对的需求,那么您需要模拟outputstream(使用EasyMock或类似的工具)和myreformatter,并验证委托是否调用了适当的方法。

 类似资料:
  • 有人对这种情况有什么建议吗?额外信息:我用的是liquidbase,panache entity,Junity。

  • 问题内容: 我查看了Android中SensorManager的源代码,发现当您将侦听器的passs控制注册到时,就会发现。 我仅以此为例。我阅读了有关委托编程的Wikipedia文章,但仍不确定其目的。为什么要使用“委托”?它如何帮助控制程序?使用(或不使用)一个的缺点是什么?与听众一起使用最实用吗? 编辑:在第487行,有问题的方法在第1054行附近。 问题答案: 在GoF书中,委托并不完全是

  • 问题内容: 在我的项目中,我可以成功测试数据库代码。我正在使用Spring,Hibernate,HSQLDB,JUnit和Maven。 问题是,当前我必须在运行测试之前手动启动HSQLDB。使用所使用的技术自动启动HSQLDB的最佳方法是什么? 问题答案: 我假设与您一起指的是HSQLDB。 将JDBC驱动程序(用于hibernate等)的数据库URL配置为基于嵌入式内存的HSQLDB版本: 然后

  • 本文向大家介绍对 Vue-Router 进行单元测试的方法,包括了对 Vue-Router 进行单元测试的方法的使用技巧和注意事项,需要的朋友参考一下 由于路由通常会把多个组件牵扯到一起操作,所以一般对其的测试都在 端到端/集成 阶段进行,处于测试金字塔的上层。不过,做一些路由的单元测试还是大有益处的。 对于与路由交互的组件,有两种测试方式: 使用一个真正的 router 实例 mock 掉 $r

  • null 那么,如果在实际的单元测试运行之前,准备所有的事情所花费的时间是原来的两倍,那么这有什么区别呢?为什么这是推荐的方式呢?

  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu