2014-02-19 5 views
0

MySQL 종속 코드를 단위 테스트하는 방법을 찾으려고합니다. 나는 그것이 어떻게 작동하는지 알고 있지만 나를 위해 작동 할 해결책을 찾을 수는 없습니다. DBUnit을 살펴 보았지만 실수가 없다면 실행중인 데이터베이스가 필요하고 유닛 테스트 측면만으로도 도움이되는 것처럼 보일 것입니다. 나는 테스트 할 때 mysql 데이터베이스를 실행하지 않도록하고 싶다. 위대한 일을하는 것은 실제 영구 데이터베이스에 액세스 할 필요없이 실제로 메모리에 데이터를 저장하는 일종의 MySQL 스푸핑 드라이버 일 것입니다.데이터베이스 유닛 테스팅 (MySQL)

내 코드에 MySQL 데이터베이스에 액세스하는 것이 어렵 기 때문에 일부 모의 객체를 삽입 할 수 없습니다.

DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password); 

을 실제로 중 하나를 받는다는 통해 또는 받는다는 테스트의 설정에서 구성 할 수있는 몇 가지 다른 로컬 데이터베이스를 가져옵니다 내가이 일을하고 싶은 방법은 내 코드를 호출 할 때이다. HSQLDB와 같은 메모리 기반의 데이터베이스를 살펴 보았지만 MySQL 드라이버를 스푸핑 할 수있는 방법을 찾을 수 없습니다.

내가 찾고있는 것을 제공하는 도구가 있습니까? MySQL 의존적 인 코드를 테스트하는 좋은 방법이 있습니까?

+0

http://stackoverflow.com/questions/10692398/how-do-i-make-a-mysql-database-run-completely-in-memory 단위 테스트에서 주 데이터베이스를 시작하기 전에 먼저 데이터베이스를 채우는 것을 기억해야하는 경우 프로그램. – Tschallacka

+0

실제 mysql 서버를 실행하지 않고 어떻게 사용할지 모르겠습니다. 그러나 그 생각은 내 유닛 테스트 중에 실행되는 임베디드 (embedded) mysql 서버에 대해 생각하게했다. – flungo

답변

1

실행중인 MySql 서버에 대해 통합 테스트를 수행해야하는 프로젝트가 여러 개 있습니다. 매번 설정하는 데 시간을 보내는 대신, 테스트를 실행할 때마다 MySQL의 로컬 실행 인스턴스를 설정하는 library을 개발했습니다.

이 기능을 사용하면 설정하지 않고도 실제와 같은 역할을하는 테스트 데이터베이스를 얻을 수 있습니다.

데이터베이스 통합을 조롱하려면 DBUnit을 사용하는 것이 좋습니다 (DBUnit을 사용할 때 실제 MySql 서버가 필요 없음).

+0

필자는 테스트 종속성의 일부로 MySQL 임베디드 버전을 사용하는 비슷한 접근 방식으로 끝났다고 생각합니다. MyUnit이라는 프로젝트를 만들었습니다. MyUnit을 확장하면 테스트 전후의 MySQL 데이터베이스를 인스턴스화하고 파괴 할 수 있습니다. DBUnit은 관심을 가지기 때문에 그 점을 살펴볼 것입니다. 이 작업에 대한 필요성은 실제로 제가 작업중인 프로젝트에서 다시 나타나서 다시 옵션을 살펴 보겠습니다. – flungo

+0

http://stackoverflow.com/a/19279391/416300을 참조하십시오. 이 사람은 테스트 전후에 MySQL DB를 시작하고 중지하는 Maven 플러그인을 작성했습니다. – summerbulb

+0

맞습니다. Java 응용 프로그램을 개발할 때 사용할 수 있습니다. – StumpDK