이것은 previous question에 대한 후속 질문입니다.JUnit을 사용하여 ServiceLocator 테스트하기
내 ServiceLocator 클래스에 대한 테스트 케이스를 작성하려고하고 있지만, 그것은 나에게 다음과 같은 오류 제공 :
이com/iplanet/ias/admin/common/ASException
java.lang.NoClassDefFoundError: com/iplanet/ias/admin/common/ASException
at java.lang.ClassLoader.defineClass1(Native Method)
내 테스트 케이스 :
이public void testServiceLocator() throws UivException, NamingException
{
DataSource ds = ServiceLocator.getInstance().getDataSource("jdbc/RSRC/my/mydb");
//I have not put any assert statements because i know above line is failing
}
위의 코드는 getInstance()
방식에 실패 보이는을 좋아요 :
static public ServiceLocator getInstance() throws UivException {
try {
if (me == null) {
synchronized(ServiceLocator.class) {
me = new ServiceLocator();
}
}
return me;
}
catch (UivException e) {
throw new UivException(ErrorCode.SERVICE_LOCATOR_ERROR,
ErrorCode.SERVICE_LOCATOR_LOOKUP_ERROR,
e.getMessage());
}
}
저는 이것을 알고 있습니다. ServiceLocator
잘 동작합니다. 프런트 엔드에서 응용 프로그램을 테스트 할 때 아무런 문제가 없기 때문입니다. 이 테스트 사례를 쓰는 이유는 내 DAO을 테스트하기 때문입니다. 그리고 내 DAO를 테스트하려면 ServiceLocator
이 작동해야합니다 (JUnit에서).
나는 오류 메시지의 원인을 알지 못합니다. 누구든지 내가 시도 할 수있는 뭔가를 제안하고 싶습니까?
편집
: ServiceLocator 생성자private ServiceLocator() throws UivException {
try {
ic = new InitialContext();
// System.out.println("Created the Initial Context");
cache = Collections.synchronizedMap(new HashMap());
}
catch (NamingException ne) {
throw new UivException(ErrorCode.SERVICE_LOCATOR_ERROR,
0, ne.getMessage());
}
catch (NullPointerException e) {
throw new UivException(ErrorCode.SERVICE_LOCATOR_ERROR,
0, e.getMessage());
}
}
저는 앱 서버에 의존하고 있습니다. appserver에는 이미 모든 설정이 있으므로 테스트를 작성하고 함께 사용하기를 원했습니다. – Omnipresent
com.iplanet 항목은 Sun App 서버의 관리 속성 인 것 같습니다. 그게 아마 애플 리케이션 서버에서 JDBC 리소스를 얻을 필요했습니다. ...하지만 Junit 테스트는 앱 서버에 '배포'되어 있지 않습니다 ... – Omnipresent
하지만 유닛에서 JDBC 드라이버를로드하려고 호출하는 코드를 테스트하면 단위 테스트를 실행할 때 JDBC 드라이버가 클래스 경로에 있어야합니다. –