java - 如何在不测试调用数据库的私有(private)方法的情况下进行单元测试

标签 java c# unit-testing microsoft-fakes

我在理解如何对我的应用程序进行单元测试方面遇到困难。

假设我有一个公共(public)方法 publicMethod() 调用几个保存业务逻辑的私有(private)方法。 我了解到私有(private)方法不应该进行单元测试,因此我需要对 publicMethod() 进行单元测试。

问题是我的私有(private)方法有时会访问数据库。由于我没有对私有(private)方法进行单元测试,因此我无法伪造数据库调用。我能做的是伪造私有(private)方法调用,但是如果我伪造它,我就会失去测试的所有兴趣,因为不再测试业务逻辑。

在这种情况下我可以对逻辑进行单元测试的解决方案是什么?

最佳答案

好吧,如果没有更多的投入,很难指出解决方案,但我会尝试提供一些想法(希望它们有所帮助)。我想说,就像 JamesB 指出的那样,您想要对其中包含业务逻辑的所有内容进行单元测试。

根据您的问题,您可能在区分程序中的职责时遇到了一些麻烦。看来您有一个入口点 publicMethod() 和几个管理业务逻辑的私有(private)方法。通过访问同一对象内的数据库,您可以将数据层耦合到业务逻辑。通过使这些方法使用数据提供程序,您可以将对象配置为从您可以控制的另一个数据源读取数据来指导您的测试,而不使其依赖于状态。

关于java - 如何在不测试调用数据库的私有(private)方法的情况下进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27268502/

相关文章:

java - Spring data jpa嵌套事务回滚不删除插入?

java - 如何使用 Java 在 MongoDB 3.3 中按日期搜索文档

c# - 在 VS2010 c# 中调试 EXCHANGE 传输代理

java - Android Base64编解码单元测试返回null

c++ - 为什么在使用解除引用的指针时 EXPECT_CALL 测试意外通过?

java - 将 if/else block 转换为三元运算符时的错误答案

java - java中的内存数据库算法/设计/逻辑

c# - 按下鼠标左键时更改鼠标光标?

c# - 以编程方式更改 AssemblyVersion 和 AssemblyFileVersion 属性

unit-testing - 如何使用angulardart测试异步代码