如何测试方法将返回莫科托(Mockito)的布尔值



我正在学习如何在Android Studio中进行单位测试。如下所示,我有一种称为" Isvalidurl"的方法,在下面的测试部分中,我对测试进行了编码使用Mockito的方法,但测试总是失败。

您可以帮助我如何测试此方法?

代码

public boolean isValidUrl(String url) {
    return (url != null && !url.equals("")) ? true : false;
}

测试

public class ValidationTest {
@Mock
private Context mCtx = null;
@Before
public void setUp() throws Exception {
    mCtx = Mockito.mock(Context.class);
    Assert.assertNotNull("Context is not null", mCtx);
}
@Test
public void isValidUrl() throws Exception {
    Validation validation = new Validation(mCtx);
    String url = null;
    Mockito.when(validation.isValidUrl(url)).thenReturn(false);
}

}

您正在获得异常,因为您正在尝试模拟'真实'对象的行为(validation)。

您需要分开两件事:模拟断言

模拟意味着创建类的"假"对象(就像您使用Context一样)并在测试前定义其行为。在您的情况下

 Mockito.when(validation.isValidUrl(url)).thenReturn(false);

表示,如果调用isValidUrl(url),请告诉validation对象返回false。不过,您只能使用模拟的对象来做到这一点,无论如何,这样做是没有意义的,因为您想测试Validation类的"真实"行为,而不是模拟对象的行为。模拟方法通常用于定义类依赖性的行为,在这种情况下,Context再次使用。对于您的测试,这是不必要的。

断言然后对正在测试的课程进行表现的实际"测试"。

您要测试isValid()返回false的url,即null

Assert.assertEquals(validation.isValid(null), false); 

或短:

Assert.assertFalse(validation.isValid(null)); 

您可以使用assertEqualsassertFalseassertTrue和其他一些方法来验证您的isValid()方法是否返回了您想要的内容,以返回给定的url参数。

相关内容

  • 没有找到相关文章

最新更新