El objeto de prueba Target

El objeto de prueba Target es una especificación de las clases y métodos a los que debe aplicarse la prueba.

El objeto Target es opcional. Cuando no se especifica ningún objeto Target, la prueba se aplicará a todas las clases que procesa el motor de instrumentación.

El objeto Target le permite crear reglas de filtrado para incluir o excluir métodos de la instrumentación en función de patrones que se comparan respecto al paquete, clase y nombre de método, además de la firma del método. Los patrones pueden contener comodines, donde "*" coincidirá con cero o más caracteres.

Si los patrones comodín de un objeto Target coinciden con el paquete, clase, nombre y firma de un método, la propiedad type determina si el método se instrumenta (include) o no (exclude). Si los patrones no coinciden con el paquete, clase, nombre y firma de un método, por omisión, el método se instrumenta.

El objeto Target incluye las siguientes propiedades:
Propiedad Descripción
type Obligatoria. La propiedad type determina si una prueba se aplica o no a un método de destino. Especifique include para aplicar la prueba a las clases y métodos que coinciden con los patrones comodín, y exclude para excluirlos.
package Opcional. Especifique un patrón comodín para compararlo respecto de la parte de paquete de los nombres de clase. Por ejemplo: java.util* coincidirá con cada clase del paquete java.util y sus subpaquetes. Si no se especifica, el valor por omisión es *.
className Opcional. Especifique un patrón comodín para compararlo respecto de los nombres de clase. Si no se especifica, el valor por omisión es *.
method Opcional. Especifique un patrón comodín para compararlo respecto de los nombres de método. Si no se especifica, el valor por omisión es *.
signature Opcional. Especifique un patrón comodín para compararlo con la firma de un método; es decir, la serie que representa los argumentos y el tipo de retorno del método. Es el formato interno Java para las firmas de método. Por ejemplo: (Ljava/lang/Object;)D es la firma de un método que acepta un Object como parámetro y devuelve un doble. Este patrón comodín puede utilizarse para distinguir entre métodos sobrecargados. Si no se especifica, el valor por omisión es *.

Notas:

  • Una prueba puede tener varios objetos Target que contienen sucesivas reglas de destino. Para establecer como destino sólo los métodos que especifique, añada un objeto Target final que especifique package=* className=* method=* signature=* type=exclude después del objeto Target para los métodos que desee establecer como destino.
  • Los nombres de paquete y clase especificados en un objeto Target también se comprueban respecto a los nombres de paquete y clase de las interfaces que implementa una clase. Por ejemplo, java.util.HashMap implementa la interfaz java.util.Map. Si una prueba tiene como destino el paquete java.util, el nombre de clase Map y el nombre de método size, la prueba se aplicará a java.util.HashMap.size() y al método size de cualquier otra clase que implemente la interfaz Map.
  • La coincidencia de patrón no tiene en cuenta las relaciones de herencia: si la clase Derived amplía la clase Base y una prueba tiene como destino Base.run(), la prueba no se aplicará automáticamente a Derived.run().
  • Si el patrón de paquete en un objeto Target es un único carácter de punto ("."), representa el paquete Java global sin nombre. De esta forma, puede establecer explícitamente como destino clases del paquete global. Por ejemplo:
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    Estas dos reglas de destino hacen que la prueba tenga como destino la clase SomeClass en el paquete global, mientras que excluye todas las demás clases. Mediante estas reglas, se excluye una clase llamada SomeClass que se encuentra en cualquier otro paquete.
  • Las pruebas de sitio de llamada comparan los patrones y reglas de destino respecto del paquete, clase, nombre y firma de un método llamado. La comparación se realiza respecto al método llamado tal como se conocía durante la compilación; es decir, respecto a los nombres de método y clase conocidos estáticamente, y no a los métodos reales que se llamarán debido a la herencia y a las funciones virtuales. Si la llamada se realiza a través de una referencia a interfaz, el nombre de interfaz debe coincidir.
Ejemplo
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

Contenido por
El objeto Probe

Tema padre: Consulta de Probekit

Copyright IBM Corporation y otras empresas 2000, 2004.