0

我刚刚开始使用 Mockito 在 Android 上进行单元测试 - 你如何让你正在测试的类使用模拟类/对象而不是常规类/对象?

4

2 回答 2

1
  1. 您可以将 @InjectMocks 用于编写测试的课程。

    @InjectMocks private EmployManager manager;

  2. 然后,您可以将 @Mock 用于您要模拟的课程。这将是依赖类。

    @Mock private EmployService service;

  3. 然后编写一个设置方法以使您的测试可用。

@Before
public void setup() throws Exception {
  manager = new EmployManager();
  service = mock(EmployService.class);
  manager.setEmployService(service);
  MockitoAnnotations.initMocks(this);
}

然后写你的测试。

@Test
public void testSaveEmploy() throws Exception {
    Employ employ = new Employ("u1");
    manager.saveEmploy(employ);

    // Verify if saveEmploy was invoked on service with given 'Employ'
    // object.
    verify(service).saveEmploy(employ);

    // Verify with Argument Matcher
    verify(service).saveEmploy(Mockito.any(Employ.class));
}
于 2013-08-13T06:32:24.573 回答
0

通过注入依赖:

public class ClassUnderTest
    private Dependency dependency;

    public ClassUnderTest(Dependency dependency) {
        this.dependency = dependency;
    }

    // ...
}

...

 Dependency mockDependency = mock(Dependency.class);
 ClassUnderTest c = new ClassUnderTest(mockDependency);

您还可以使用 setter 来注入依赖项,甚至可以直接使用@Mock@InjectMocks注​​解注入私有字段(阅读javadoc以了解它们如何工作的详细说明)。

于 2013-08-12T11:23:59.687 回答