Unit testing JUnit—测试一个方法,该方法反过来调用更多的方法
这是我对单元测试时我们所认为的“单元”的怀疑 假设我有一个这样的方法Unit testing JUnit—测试一个方法,该方法反过来调用更多的方法,unit-testing,junit,Unit Testing,Junit,这是我对单元测试时我们所认为的“单元”的怀疑 假设我有一个这样的方法 public String myBigMethod() { String resultOne = moduleOneObject.someOperation(); String resultTwo = moduleTwoObject.someOtherOperation(resultOne); return resultTwo; } (我分别为s
public String myBigMethod()
{
String resultOne = moduleOneObject.someOperation();
String resultTwo = moduleTwoObject.someOtherOperation(resultOne);
return resultTwo;
}
(我分别为someOperation()和someOtherOperation()编写了单元测试)
这个myBigMethod()通过如上所述的方式集成了ModuleOne和ModuleTo
那么,方法“myBigMethod()”是否仍然被视为一个“单元”
我应该为这个“myBigMethod()”编写测试吗
假设我已经为myBigMethod()编写了一个测试。。。如果testSomeOperation()失败,还将导致testMyBigMethod()失败。。。现在testMyBigMethod()的失败可能显示错误的位置不太正确
导致两次测试失败的一个原因在我看来不太好。但唐诺,如果有更好的办法。。。?有吗
谢谢 您希望测试myBigMethod的逻辑,而不测试依赖项 看起来myBigMethod的规范是:
这个问题不仅仅是学术性的,因为在实践中,moduleNoObject和moduleWoObject可能会攻击外部系统,比如数据库。真正的单元测试不会影响外部系统,因为这将使其成为“集成测试”。您希望测试myBigMethod的逻辑,而不测试依赖项 看起来myBigMethod的规范是:
这个问题不仅仅是学术性的,因为在实践中,moduleNoObject和moduleWoObject可能会攻击外部系统,比如数据库。真正的单元测试不会影响外部系统,因为这会使它成为一个“集成测试”。
myBigMethod()
的测试应该测试调用的其他两个方法的结果的组合。所以,是的,如果它所依赖的任何一种方法失败,它都应该失败,但它应该进行更多的测试。在某些情况下,someOperation()
和someOtherOperation()
工作正常,但myBigMethod()
仍可能失败。如果不可能,则无需测试myBigMethod()
对myBigMethod()
的测试应测试调用的其他两种方法的结果的组合。所以,是的,如果它所依赖的任何一种方法失败,它都应该失败,但它应该进行更多的测试。在某些情况下,someOperation()
和someOtherOperation()
工作正常,但myBigMethod()
仍可能失败。如果这不可能,那么就没有必要测试myBigMethod()
您没有在显示的代码中组合结果。我使用了someOperationOne()的结果作为someOtherOperation()的参数噢,对不起,我没有听清楚。您没有在显示的代码中组合结果。我使用了someOperationOne()的结果作为someOtherOperation()的参数噢,对不起,我没有听清楚。