2013-08-12 69 views
0

我剛剛開始使用Mockito對Android進行單元測試 - 您如何獲得您正在測試的類使用模擬類/對象而不是常規類/對象?使用模擬對象

回答

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對於他們是如何工作的詳細解釋私人領域)。

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)); 
} 
+0

你能否提供一個答案http://stackoverflow.com/questions/18201643/mock-injection-using-mockito-android。謝謝 – Traxex1909