2010-06-07 3 views
1

3 계층 응용 프로그램을 개발 중이며, 지속성 계층에서 DAO에 대한 통합 테스트를 만들고 있습니다. 응용 프로그램이 Websphere 또는 JBoss에서 실행될 때 해당 응용 프로그램 서버의 연결 풀링 및 트랜잭션 관리자를 사용할 것으로 예상됩니다. 응용 프로그램이 Tomcat 또는 Jetty에서 실행되면 풀링에는 C3P0을 사용하고 트랜잭션에는 Atomikos를 사용합니다.응용 프로그램 서버에서 DAO 통합 테스트를 수행해야합니까?

이러한 서로 다른 하위 시스템으로 인해 DAO를 완전하게 구성된 응용 프로그램 서버 환경에서 테스트해야합니까? 아니면 서비스 계층 통합 테스트시 이러한 문제를 처리해야합니까? 현재 우리는 DAO 통합 테스트를위한 비 JTA (즉, 리소스 로컬) 트랜잭션을 사용하여 간단한 JDBC 데이터 소스를 설정할 계획이므로 응용 프로그램 서버는 포함되어 있지 않습니다 ... 그러나 이것은 우리가 밝히지 않을 환경 문제에 대해 궁금해합니다. .

+0

가능하지 않을 수 있지만 컨테이너 외부하지만 데이터베이스 "단위 테스트"내 DAO를 위해 (트랜잭션을 사용하는 방법에 대한 경계에 있었다 - 간단한 JDBC로 연결), 애플리케이션 서버없이 트랜잭션을 사용하는 방법을 자세히 설명 할 수 있으면 감사하겠습니다. – dchucks

+0

@dchucks - 스프링 테스트 애플리케이션 컨텍스트를 만들고 Spring 기반 JPA 엔티티 관리자를 구성하여 Hibernate 및 Atomikos 트랜잭션 관리 도구를 사용했습니다. 자세한 내용을 보려면 질문을 열고 여기에서 질문에 대한 링크를 클릭하십시오. – HDave

답변

1

나는이 사고 방식에 옳은 길을 가고 있다고 생각합니다. 가능한 경우 프로덕션 환경을 실행하는 연속 통합 서버 (예 : Hudson)를 설정해야합니다. 그렇게하면 Tomcat 등을 사용하여 매우 높은 확신을 가지고 개발할 수 있으며 로컬 설정에 대해 테스트를 실행하고 코드를 체크인 할 때 실제 테스트에 대해 동일한 테스트가 실행되는지 확인하십시오.

+0

우리는 이미 허드슨을 운영하고 있습니다. DAO 테스트가 앱 서버에서 실행되어야하는지 아니면 단지 엔드 투 엔드 테스트에서 실행되어야하는지 궁금합니다. – HDave

2

unittests를 사용하여 각 모듈을 테스트하는 것 외에도 integration test은 모듈 그룹을 테스트해야합니다.

나는 보수적이되고 싶지 않다.하지만 이것은 QA의 블랙 박스 테스트를 위해 system test으로 처리되었다.

작은 프로젝트의 경우이있을 수 있습니다 주제 오프

+0

완전히 동의 함 - 통합 테스트가 클라이언트에서 데이터베이스로 전체 경로를 테스트하는 것으로 이해합니다. 서비스 계층을 테스트하는 것만으로는 단위 테스트 일뿐입니다. –

+0

2 개 또는 그 이상의 모듈 또는 하나의 모듈 및 외부 리소스로 통합 테스트의 정의를 이해했습니다. 정의에 관계없이, DAO 테스트는 앱 서버에서 실행되어야합니까? 아니면 단지 종단 간 테스트입니까? – HDave

관련 문제