如何在 Mockito 中测试方法 returns 布尔值
How to test a method returns boolean in Mockito
我正在 android 工作室学习如何进行单元测试。如下所示,我有一个名为 "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);
}
}
您遇到异常是因为您试图模拟 'real' 对象 (validation
) 的行为。
你需要分开两件事:模拟和断言。
Mocking 意味着创建 class 的 'fake' 个对象(就像您对 Context
所做的那样)并在测试前定义它们的行为。
在你的情况下
Mockito.when(validation.isValidUrl(url)).thenReturn(false);
意思是,如果调用 isValidUrl(url)
,你告诉 validation
对象 returns false。不过,您只能使用模拟对象来做到这一点,在您的情况下,无论如何这样做都是没有意义的,因为您想测试 Validation
class 的 'real' 行为,而不是测试行为一个被嘲笑的对象。
模拟方法通常用于定义 class 的依赖项的行为,在本例中,同样是 Context
。
对于此处的测试,这不是必需的。
Asserting 然后执行 'test' 被测 class 的实际行为。
您想测试 isValid()
return 是否为 url
即 null
的错误:
Assert.assertEquals(validation.isValid(null), false);
或更短:
Assert.assertFalse(validation.isValid(null));
您可以使用 assertEquals
、assertFalse
、assertTrue
和 some others 来验证您的 isValid()
方法是否 return 是您想要的对于给定的 url
参数,它为 return。
我正在 android 工作室学习如何进行单元测试。如下所示,我有一个名为 "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);
}
}
您遇到异常是因为您试图模拟 'real' 对象 (validation
) 的行为。
你需要分开两件事:模拟和断言。
Mocking 意味着创建 class 的 'fake' 个对象(就像您对 Context
所做的那样)并在测试前定义它们的行为。
在你的情况下
Mockito.when(validation.isValidUrl(url)).thenReturn(false);
意思是,如果调用 isValidUrl(url)
,你告诉 validation
对象 returns false。不过,您只能使用模拟对象来做到这一点,在您的情况下,无论如何这样做都是没有意义的,因为您想测试 Validation
class 的 'real' 行为,而不是测试行为一个被嘲笑的对象。
模拟方法通常用于定义 class 的依赖项的行为,在本例中,同样是 Context
。
对于此处的测试,这不是必需的。
Asserting 然后执行 'test' 被测 class 的实际行为。
您想测试 isValid()
return 是否为 url
即 null
的错误:
Assert.assertEquals(validation.isValid(null), false);
或更短:
Assert.assertFalse(validation.isValid(null));
您可以使用 assertEquals
、assertFalse
、assertTrue
和 some others 来验证您的 isValid()
方法是否 return 是您想要的对于给定的 url
参数,它为 return。