Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试方法时,进行模拟的正确方法是什么?_Java_Unit Testing_Mocking - Fatal编程技术网

Java 测试方法时,进行模拟的正确方法是什么?

Java 测试方法时,进行模拟的正确方法是什么?,java,unit-testing,mocking,Java,Unit Testing,Mocking,我刚刚使用mock,特别是jMock(用于java)。我以前做过一些测试,但没有使用mock,我想知道制作它们的正确方法是什么 例如,我有一个带有实现的服务。。所以,我有这个服务测试。在服务器测试中,我有自己的方法 假设我在servicehelopertest上有methodA,作为methodA的一部分,我有这个 ArrayList someValues = serviceHelperImpl.otherMethod 因此,据我所知,我应该模拟这个serviceheloperimpl.oth

我刚刚使用mock,特别是jMock(用于java)。我以前做过一些测试,但没有使用mock,我想知道制作它们的正确方法是什么

例如,我有一个带有实现的服务。。所以,我有这个服务测试。在服务器测试中,我有自己的方法

假设我在
servicehelopertest
上有
methodA
,作为
methodA
的一部分,我有这个

ArrayList someValues = serviceHelperImpl.otherMethod
因此,据我所知,我应该模拟这个
serviceheloperimpl.othermethod
,因为我并不在乎它是否好,它应该返回一些值

那么,假设我期望一个
布尔值,有可能这样做吗

public myMethodToTest(){
     mockery.checking(new Expectations() {
     {
                oneOf(serviceHelper).otherMethod();
                will(returnValue(true));


            }
        });


     Boolean myVar = serviceHelper.otherMethod();
     ...
}

我不知道这是否正确。。。知道应该如何在测试单元上实现mock吗?

我不太清楚为什么要保存
serviceheloper.otherMethod()的返回值
如果这是为了测试
otherMethod
您应该只调用
serviceheloper.otherMethod()无需将返回值保存在变量中。记住,模拟测试是检查函数的“状态”,而不是结果。如果要检查结果,应该使用xUnit测试

你的解释令人困惑。methodA或serviceHelperImpl在哪里?你能给出一个完整的例子吗?我不确定你是在问实践问题(应该如何使用模拟)还是在问实现问题(在这种情况下我如何使用模拟)。如果是前者,也许看看吧。如果是后者,那么您需要问一个更具体的问题,并接受答案将根据模拟框架的不同而变化。