2012-11-28 2 views
0

일부 단위 테스트가 실행되고 있지만 사용 후 풀에 연결이 해제되지 않는 것과 관련하여 이상한 동작이 나타납니다 (필연적으로 테스트 수가 늘어나면 단위 테스트가 중단됩니다). 내 설정 방법에Groovy SQL 연결이 닫히지 않았습니다.

@Before void setUp(){ 
    sql = new Sql(getDataSource()) 
    println getDataSource().getNumActive() 
} 

@After void tearDown(){ 
    sql.close() 
} 

@Test void test1(){ 
    println sql.rows("select 1") 
} 
@Test void test2(){ 
    println sql.rows("select 1") 
} 
@Test void test3(){ 
    println sql.rows("select 1") 
} 
@Test void test4(){ 
    println sql.rows("select 1") 
} 

, 내 getDataSource() 메소드를 이용 방법은 단지 정적 초기화 BasicDataSource의을 (그래서 이것은이다 리턴 풀 크기)

는 설명하기 위해, 나는 정말 간단한 단위 테스트를 만들었습니다 동일한 데이터 소스마다 매번). 나는 또한 명시 적으로 그루비하면,

public Sql(javax.sql.DataSource dataSource) 
Constructs an SQL instance using the given DataSource. Each operation will use a Connection from the DataSource pool and close it when the operation is completed putting it back into the pool. 

그러나 데이터 소스와는 SQL 객체를 생성 할 때 필요 없다 자사의 docs 말한다에도 분해 방법에 내 SQL을 객체에 가까운 부르고

때 테스트를 실행하면 활성 연결 수가 계속 증가하고 최대 풀 크기를 2로 설정하면 두 번째 테스트가 무기한 중단됩니다.

연결이 반환되지 않는 이유는 누구에게 조언 할 수 있습니까?

감사합니다.

답변

0

좋아, 그것은 바보 같은 문제 ..

나는 TestClass에 그것에서 @Before 설정 방법을 복제 한 또 다른 클래스를 확장, 그래서 분명 풀과 재미있는 일을하고있는 것을 발견하지 않았이었다. 그걸 제거하면 문제가 해결되었습니다.

관련 문제