使用模拟对象

时间:2013-08-12 11:16:08

标签: android mocking mockito

我刚开始使用Mockito在Android上进行单元测试 - 如何使用模拟的类/对象而不是普通的类/对象来获取正在测试的类?

2 个答案:

答案 0 :(得分:1)

  1. 您可以在编写测试的类中使用@InjectMocks。

    @InjectMocks private EmployManager manager;

  2. 然后您可以将@Mock用于您正在嘲笑的课程。这将是依赖类。

    @Mock private EmployService service;

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

  4. @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));
    }
    

答案 1 :(得分: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注释直接注入私有字段(阅读the javadoc以获取有关它们如何工作的详细说明)