[英]autowired dependency not getting mocked while executing test case with junit and mockito
我在測試用例中使用Junit4和Mockito,在下面的代碼中, dbprop.getProperty("config")
拋出NullPointerException
因為dbProp為null。 請幫幫我,為什么它沒有被嘲笑?
public abstract class BaseClass {
@Autowired
protected DBproperties dbprop;
}
public class SampleClass extends BaseClass {
@Autowired
private OrderService orderService;
valdiateOrder(String input) {
String config = dbprop.getProperty("config");
}
}
public class TestSampleClass {
@InjectMocks
SampleClass sampleClass;
@Mock
private OrderService orderService;
@Test
public void testValidateOrder() {
DBproperties dbprop = mock(DBproperties .class);
when(dbprop.getProperty("config")).thenReturn("xxxx");
assertNotNull(SampleClass.valdiateOrder("xxx"));
}
}
您的dbprop
mock尚未注入sampleClass
,您需要添加:
@Mock
private DBproperties dbprop;
然后從測試方法中刪除dbprop
模擬創建:
@Test
public void testValidateOrder() {
// DBproperties dbprop = mock(DBproperties .class); <-- removed
when(dbprop.getProperty("config")).thenReturn("xxxx");
assertNotNull(SampleClass.valdiateOrder("xxx"));
}
接下來,為了確保在使用@InjectMocks
注釋時注入@InjectMocks
您需要添加以下運行器:
@RunWith(MockitoJUnitRunner.class)
public class TestSampleClass {
...
或者在@Before
方法中調用以下內容:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
有關這兩種方法的更多信息,請參閱MockitoAnnotations和MockitoJUnitRunner JavaDocs。
你可以用@Mock注釋你的對象,所以它看起來像這樣
@Mock DBproperties dbProperties; @Before public void init(){MockitoAnnotations.initMocks(this); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.