java Mocked方法正在Mockito中抛出NullPointerException
这是我的测试课
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest extends Service{
@Mock
EntityManager eman = Mockito.mock(EntityManager.class);
@Mock
Query query;
@InjectMocks
private Service service;
private static final String NAME = "name";
@Before
public void setUp() {
this.service=new Service();
}
@Test
public void firstMethodTest() {
Query query = mock(Query.class);
when(
eman.createNamedQuery(NAME)).thenReturn(query);
when
( query.setParameter("name", Type)).thenReturn(query);
when (query.getSingleResult()).thenReturn(type);
**service.getAllMethod(1, "string");**
assertSame(/*Something to compare */);
}
}
这是我的服务类方法
public getAllMethod(int ID, String string)
{
Query query=em
.createNamedQuery("name");
**query.setParameter("string", Type);**
type= query.getSingleResult();
}
当服务时。getAllMethod(1,“String”)是从模拟对象调用的,我在查询中得到NPE。setParameter(“name”,Type),因为我认为查询仍然为空。请假定我的服务很好。 提前谢谢
调试时,我在服务类中检查Query Query的值。它的值为空。我想不出如何解决这个问题
# 1 楼答案
在每次测试之前,您都在重新创建服务。所以Mockito将mock注入的
Service
已经丢失摆脱
setUp
方法,而是像这样声明服务:还有其他一些问题。e、 g.不需要},测试类不应该扩展
EntityManager
{Service
,没有使用@Mock Query
以下是一个粗略的模板:
假设服务是这样的: