Chúng tôi có nguồn dữ liệu tùy chỉnh mở rộng BasicDataSource. Chúng tôi đã ghi đè phương thức getConnection, một vài thứ bên trong nó. Khi chúng tôi chạy webapp bên ngoài thử nghiệm, khi chúng tôi gọi một dịch vụ từ một bộ điều khiển, nó sẽ lấy một kết nối mới và sử dụng kết nối đó cho đến khi dịch vụ được thực hiện. Tất cả đều tốt. Tuy nhiên, bên trong một thử nghiệm tích hợp, kết nối dường như được nắm lấy trước khi kiểm tra thậm chí gọi bộ điều khiển. Chảy bên dướiGrails Connections hoạt động rất khác nhau trong kiểm tra tích hợp
Regular Run: điều khiển cuộc gọi -> điều khiển gọi phương thức dịch vụ -> kết nối được nắm lấy -> Phương pháp dịch vụ được điều hành và trả lại để điều khiển
Integration Test: kết nối được nắm lấy -> điều khiển cuộc gọi từ thử nghiệm -> Bộ điều khiển gọi phương thức dịch vụ -> phương thức dịch vụ được chạy và trả về bộ điều khiển
Không cần phải nói, điều này khiến chúng tôi gặp vấn đề khi kết nối đúng là rất quan trọng đối với ứng dụng của chúng tôi. Suy nghĩ?
Chỉnh sửa: Vẫn gặp sự cố nghiêm trọng với vấn đề này. Chúng tôi đã đạt đến một điểm mà chúng ta phải tránh tạo ra các xét nghiệm hội nhập, hoặc làm một số chuyển đổi kết nối bằng tay (mà đánh bại nửa điểm của các bài kiểm tra)
DataSource.groovy
dataSource {
pooled = true
dialect="org.hibernate.dialect.OracleDialect"
properties {
maxActive = 50
maxIdle = 10
initialSize = 10
minEvictableIdleTimeMillis = 1800000
timeBetweenEvictionRunsMillis = 1800000
maxWait = 10000
testWhileIdle = true
numTestsPerEvictionRun = 3
testOnBorrow = true
}
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}
là u đang triển khai ControllerUnitTestCase? hay chỉ là UnitTestCase ?! –
ControllerUnitTestCase – Joseph
Bạn có thể đăng tệp DataSource.groovy của mình không? –