나는 Mockito를 처음 사용합니다. 내가 DB를 상호 작용을 조롱하여 서비스에 대한 jnuit를 작성하는 것을 시도하고있다 : 나는 (단지 실제 클래스의 대표)Mockito를 사용한 모의 내부 방법
public class TestService{
public Response getTestList(String type){
list = getListbyType(type);
return response.entity(list);
}
private List getListbyType(String type){
...
..
TestDAO testdao = new Testdao(sqlconn);
list = testdao.getListfromDB(type)
return list;
}
}
그리고 내 테스트 클래스를 클래스를 다음 한
입니다
public class TestServiceTest{
@InjectMocks
private TestService testService = new TestService();
@Test
public void getTestListTest(){
List testlist = new List();
tetslist.add("test1");
TestDAO testdaomock = mock(TestDAO);
when(testdaomock.getListfromDB("test")).thenreturn(list);
list = testService.getTestList(test);
}
}
같은
그러나이 테스트를 실행할 때 SQL 쿼리는 실제 DB 호출을 호출하고 조롱 된 값이 아닌 db에서 값을 검색합니다. SQL 연결과 기본이 아닌 생성자를 사용해야합니까? 나는 우둔 해.
- UPDATE는 사람들이 제안대로, 나는 나의 서비스 생성자에 DAO의 인스턴스를 이동하며 스파이를 사용하지만 여전히 내 실제 DB 호출은 모의 호출 대신 호출됩니다.
'private List getListbyType (String type)'이 private이기 때문에'testdaomock.getListfromDB ("test")'는 컴파일해서는 안됩니다. 어떻게 컴파일합니까? – Arkadiy
getListbyType (String type)은 private이지만 testdaomock.getList fromDB ("test")는 DAO 클래스에 있습니다. – user1933888
'@RunWith (MockitoJUnitRunner.class) ' – WildDev