फेंकता है किसी को भी मुझे नीचे परिदृश्य
कोड की व्याख्या कर सकते परीक्षण किया जाना
UserTransaction.java
JUnit mockito जब (..)। ThenReturn() NullPointerException
@Override
public ServiceResponse<User> get(String name) {
ServiceResponse<User> response = new ServiceResponse<User>();
List<Map<String, Object>> exp = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("expression", "eq");
map.put("property", "name");
map.put("value", name);
exp.add(map);
List<User> users = userDao.getByCriteria(exp);
if (!users.isEmpty()) {
response.setResponse(users.get(0));
} else {
response.setResponse(null);
}
return response;
}
UserDao.java
public List<User> getByCriteria(List<Map<String, Object>> exp) {
DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
for (Integer i=0;i<exp.size();i++){
String expression = (String) exp.get(i).get("expression");
String property = (String) exp.get(i).get("property");
if(expression.equals("eq"){
criteria.add(Restrictions.eq(property,exp.get(i).get("value")));
}
}
return hibernateTemplate.findByCriteria(criteria);
}
उपयोगकर्ताTransactionTest.java
private UserTransaction userTransactions = new UserTransaction();
private UserDao userDao = mock(UserDao.class);
@Test
public void testGet() {
User user = new User();
user.setName("Raman");
try {
when(userDao.getByCriteria(anyList())).thenReturn(user);
} catch (Exception e) {
e.printStackTrace();
}
ServiceResponse<User> response = userTransactions.get("raman");
User result = response.getResponse();
assertEquals("Raman", result.getName());
assertEquals(0, response.getErrors().size());
}
ठीक काम करता है।
लेकिन बजाय "anyList()" मैं एक उपयोगकर्ता-निर्धारित सूची "MyList"
List<Map<String,Object>> myList = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String,Object>();
map.put("expression","eq");
map.put("property","name");
map.put("value","raman");
myList.add(map);
when(userTransactions.getByCriteria(myList)).thenReturn(user);
फेंकता लाइन assertEquals()
पर NullPointerException
पारित कर दिया। क्यूं कर? वास्तव में क्या होता है यदि anyList()
दिया गया है?
तुम पर्याप्त कोड पोस्ट नहीं करना जिससे दूसरों को यह देखना मुश्किल हो जाता है कि आप कहां गलत हो रहे हैं। क्या 'जब (userTransactions.' एक वर्तनी गलती है?' MyList' कैसे बनाया जा रहा है? 'GetByCriteria() 'का विधि हस्ताक्षर क्या है? – Brad
क्या मुझे यहां कुछ याद आ रही है? आप 'जब (userTransactions ...' पोस्ट करते रहते हैं और वह ऑब्जेक्ट नहीं बनाया गया है। आपने उपरोक्त कोड में 'userTransaction' बनाया है, लेकिन' उपयोगकर्ता ट्रांज़ेक्शन 'नहीं है (अंत में "s" को नोट करें)। यदि आप अपना कोड डीबग करते हैं क्या 'userTransactions' नामक ऑब्जेक्ट मौजूद है और यह एक मॉक ऑब्जेक्ट है? – Brad
क्या आप स्पष्टीकरण दे सकते हैं कि यह' कब 'के साथ लाइन पर अपवाद फेंक रहा है या परीक्षण के भीतर की रेखा पर जहां' GetCyrititeria 'वास्तव में कहा जाता है? और कुछ पोस्ट करें आपके कोड का अधिक - जैसा कि अन्य ने कहा है, आपने वास्तव में पर्याप्त जानकारी प्रदान नहीं की है ताकि हमें गलत क्या पता चल सके। –