Eclipse 3.7에서 JUnit 4.10을 실행하고 있습니다. 나는 데이터베이스 테스트를하고있다 : 사용 된 데이터베이스는 sqlitejdbc 인 SQLite3이다. 나는 창문과 리눅스 모두에서 시험을 시험해 보았고 나의 관측은 다음과 같다.JUnit 테스트에서 SQLite 데이터베이스 잠금
- Windows 7 x64에서, 테스트는 더 빨리 실행된다 (테스트 당 0.6s). "데이터베이스 파일을 열 수 없습니다"라는 오류 메시지가 나타납니다. 간헐적 인 것으로 보입니다. (때로는 동일한 테스트가 다음 실행이 실패 할 때 한 번 성공할 수 있습니다.)
- 우분투 11.10 x64에서 테스트는 느립니다 (테스트 당 3 초). "데이터베이스 잠김"에 관한 오류가 발생합니다. Windows의 오류가 간헐적으로 발생하는 것과 달리 여기서 오류는 동일한 테스트/파일에서 발생하는 것으로 보이고 잠금 오류가 발생하면 모든 테스트가 실패합니다.
당신은 GitHub에 테스트를위한 코드를 찾을 수 있습니다
UPDATE. 나는 문제가 내 @BeforeClass
, @Before
및 테스트 스위트가 설치 얼마나 함께 할 수있는 뭔가있을 것 같아요
내 테스트 클래스에서 다음
@RunWith(Suite.class)
@SuiteClasses({ DataAccessTests.class, SimpleQueryTests.class, ... })
public class DataAccessTestSuite {
@BeforeClass
public static void setUpDatabase() throws SQLException, ClassNotFoundException {
DataAccess.setEnvironment(DataAccess.DATABASE_TESTING);
Connection conn = DataAccess.getConn();
// truncate tables: simply DELETE statements
truncateTables(conn);
// insert test data, INSERT statements
insertTestData(conn);
}
같은 테스트 스위트가 나는 또한 설정을 호출하는 @Before
있었다 .
public class EventsDataAccessTests {
@Before
public void setup() throws SQLException, ClassNotFoundException {
DataAccessTestSuite.setUpDatabase();
}
전체 제품군을 호출하고 싶지 않을 경우에 대비해 데이터베이스를 설정하고 싶습니다. 나는이 문제가이 문제와 관련이 있다고 생각하지만, 그것이 정확히 어떻게 문제를 일으키는 지 잘 모르겠습니다. 개별 테스트 클래스를 호출하더라도 해당 제품군에 대한 설치가 실행됩니다. 그렇지 않은 경우, 스위트에서 테스트가 호출되지 않는 경우 어떻게 실행되는지 어떻게 보장 할 수 있습니까?
은 - 올드 포스트 제거 -
단위 테스트를 동시에 실행합니까? – kan
Eclipse를 사용하여 테스트를 실행했는데 Eclipse의 여러 인스턴스가 없으므로 테스트가 동시에 실행되지 않아야합니까? –
'@SuiteClasses ({DataAccessTests.class, SimpleQueryTests.class, SimpleInsertTests.class, SimpleUpdateTests.class, ...})'와 같은 것이 있다면 동시에 실행되는 개별 테스트 클래스입니까? –