2014-05-15 216 views
1

大更新: 有沒有人遇到過這個問題?Junit測試在包上運行失敗,但在文件上運行時成功

我在Maven項目中使用JUnit 4.5和Mockito 1.7。

我在包testCaseFolder中有testCaseA.java。 如果我打開testCaseA.java,右鍵單擊代碼,選擇「Run as」 - 「Junit test」就可以了。 但如果我右鍵單擊包,選擇 「運行方式」 - 「JUnit測試」,它將會失敗:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Misplaced argument matcher detected! 
Somewhere before this line you probably misused Mockito argument matchers. 
For example you might have used anyObject() argument matcher outside of verification or stubbing. 
Here are examples of correct usage of argument matchers: 
    when(mock.get(anyInt())).thenReturn(null); 
    doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject()); 
    verify(mock).someMethod(contains("foo")); 
    at testCaseA.setUP(testCaseA.java:33) 

第33行是://MockitoAnnotations.initMocks(this);***//it said this is error***

下面是代碼:

SomeService service; 
@Mock 
private CommonService commonService; 
@Mock 
public Errors errors; 

@Before 
public void setUp() { 
    MockitoAnnotations.initMocks(this);***//it said this is error*** 
} 

@Test 
public void testvalidate() { 
    //fail even here is empty 
} 
+0

一些挖後,我發現這個問題,我只是不知道爲什麼,以及如何解決。問題不在於MockitoAnnotations.initMocks(this);問題是模擬,@Mock私有CommonService commonService;如果我不嘲笑任何東西,它會被發現。如果在這裏嘲笑,那就錯了。 – Jack

+0

我把你的編輯回來了,因爲有一個答案與你的原始版本保持了上下文。將來,避免進行編輯,使問題上的現有答案無效。這可能會導致其他有類似問題的人對您的具體錯誤是什麼以及您如何解決問題感到困惑。 – Makoto

回答

0

更新 從你得到這個錯誤應該是正確的。

您的Mockito.when語句錯誤。

Mockito.when(commonService.get(Mockito.eq(contactGroupId))).thenReturn(disseminationProfile); 

或者

Mockito.when(commonService.get(Mockito.anyLong())).thenReturn(disseminationProfile); 
+0

不,這沒關係,我可以評論方法public void testvalidate()內的所有代碼。仍然會得到相同的錯誤。 – Jack

+0

看http://docs.mockito.googlecode.com/hg/org/mockito/MockitoAnnotations.html – ndrone

+0

謝謝ohiocowboy,之前我讀過,這是一個stander doc,我按照說的做,有問題,所以它沒有解決我的問題。 – Jack

相關問題