Pregunta

Hola Suponga que tengo una interfaz A y B una clase que implementa A. Dentro de mi clase de prueba que crear una clase que implementa un maniquí y yo "prueba los métodos de interfaz" Ahora mi pregunta es necesario probar los métodos que la clase B "recibe" de la interfaz.

¿Fue útil?

Solución

En mi experiencia, sólo las clases concretas de prueba y su interacción con las interfaces.

Es decir, si usted tiene el hormigón de clase B que implementa una, que acaba de ensayo B y su interacción con otros objetos que hace referencia.

Otros consejos

En general, la prueba debe tocar todas las líneas (ejecutables) de código. Si va a implementar una interfaz que hace que sea mucho más fácil, ya que se puede pruebas de código que forman el "contrato" de la interfaz y ahora las pruebas se aplican a todos los ejecutores de la interfaz.

Esto asegura la coherencia en todos los implementadores. Si se le presenta una situación en la que los ejecutores se comportan de forma diferente (por ejemplo NullReferenceException vs ArgumentNullException) se pueden añadir pruebas especificando que es "correcto" y lo que está mal. Esto lleva a menos sorpresas en el camino.

Me podría incluso ir tan lejos como para decir que cada interfaz debe tener un conjunto de pruebas adjuntas para describir el comportamiento esperado.

Hay cosas específicas de implementación supuesto que sólo se pueden probar en el implementador de concreto (por ejemplo, "¿Estaba el archivo escrito?" Vs. "fue el disco comitted?"). Estas cosas deben ser proporcionados a través de eludir o lambdas al conjunto de pruebas de la interfaz.

Sí, usted debe tratar de obtener la cobertura de código 100% con su prueba

Debido a que su interfaz no debe tener ninguna aplicación concreta a continuación, no es necesario probar que ya no hay nada que prueba por definición. La prueba debe ser para la aplicación concreta de la interfaz.

Si usted se encuentra en una situación en la que es necesario tener un IMPLANTACIÓN parcial de una interfaz que puede hacer lo que hago. Por ejemplo, decir que tengo una interfaz de un elemento. Este IItem llamada I y tiene toda la interfaz. Entonces declarar un Item que es la aplicación parcial de la interfaz para el código común y luego ItemA, ItemB, etc., para las especialidades de Item.

He leído todos sus mensajes Yo creo que esta solución funciona mejor.

Interface A
{
   String A1();
   String A2();
}

public class B:A
{
   String A1(){return "A1"}
   String A2(){return "A2"}
}

public class testB
{
   public void B_Can_Return_A1()
   {
      A b=new B();
      Assert.True(b.A1=="A1")
   }
}
  

Pero si va a quitar un método de una interfaz que las implementaciones concretas todavía se basan en duda que no se debe eliminar esa parte de la interfaz?

Esto es cierto, pero esto todavía debe ser ejecutada en pruebas es decir ensayadas. las interfaces (deben) juegan un papel importante en el desarrollo y los cambios pueden crear grandes problemas en la línea. Si un objeto implementa una interfaz Creo que esta es la forma en que debe ser probado o algo similar.

Por favor, comentar sobre esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top