2011-11-26 17 views
13

Quiero probar la clase con la conexión make db. La clase que quiero probar acepta como param en la clase de constructor Connection. Quiero pasar el objeto simulado al constructor. ¿Me puede decir un buen marco con ejemplos de cómo burlarse de la conexión db?Java simula la conexión de base de datos

+1

Puede estar interesado en este recurso: http://programmers.stackexchange.com/questions/118933/what-elements-of-my-junits-should-i-mock –

Respuesta

10

Puede usar MockRunner, que tiene soporte para JDBC. Los marcos de burla generales como Mockito también funcionarán, pero JDBC es un conjunto de interfaces que se devuelven mutuamente, por lo que la burla a mano será difícil. Vea usted mismo: How to stub/mock JDBC ResultSet to work both with Java 5 and 6?

Sin embargo burlando de JDBC es tan frágil y prolijo (no importa qué herramientas que usa) que iba a sugerir ya sea haciendo abstracción de acceso JDBC dentro de alguna capa delgada DAO (ver @duffymo respuesta) o ir en -memoria base de datos como H2.

Consulte también:

+0

http://mockrunner.github.io/dice en el sitio que aloja la versión actualizada pvi :) –

3

La conexión es una interfaz. Cualquier marco de burla podrá simularlo: EasyMock, Mockito, ...

Burlarse no es diferente de burlarse de cualquier otra interfaz Java.

1

puedes probar easymock. es fácil de usar, creo. puede encontrar un tutorial de referencia. easymock

3

no me cree una conexión simulada - No prueba nada, en mi opinión.

Puedo ver por qué se burlaría del repositorio/DAO después de haberlo probado completamente con una conexión en vivo. Le daría el repositorio simulado/DAO a un servicio u otro cliente porque ya lo ha probado, no es necesario que pruebe que funciona hasta que realice una prueba de integración.

1

Si va a reutilizar ese simulacro en muchos casos de prueba, también puede considerar implementar su propia implementación de conexión y reutilizar esa implementación en todas partes.

3

Usted puede utilizar un marco de burla, tales como los mencionados en la respuesta anterior (Yo personalmente uso EasyMock) O crear su propio objeto de burla:

class FakeConnection extends Connection{ 
     // Overrive all method behavious you want to fake. 
} 
1

marco Acólito es útil para tales fines ->https://github.com/cchantep/acolyte.

Con esta lib puede crear una instancia de conexión para la que proporcione el controlador. Implementando controlador, puede 'enviar' consulta o actualizar: produciendo conjuntos de resultados o conteo de actualizaciones (o advertencia).

Cuestiones relacionadas