Cancelando o Registro de Referências a Objetos de Teste

Os métodos de script auxiliares referem-se a um objeto no aplicativo em teste utilizando o mapa de objetos de teste. O Functional Tester localiza esses objetos mapeados sempre que um método é chamado no objeto. Em alguns casos, no entanto, você pode optar para que o Functional Tester não faça isso.

Por exemplo, você poderia chamar vários métodos diretamente no mesmo objeto e seria perda de tempo o Functional Tester localizar o objeto sempre que um método fosse chamado. O método TestObject.find pode ser utilizado para localizar um objeto sem que o Functional Tester chame nenhum método no objeto. O TestObject.find retorna um novo TestObject contendo um tipo diferente de referência para o objeto no aplicativo em teste. Essa referência é, às vezes, chamada de referência de ligação, referência localizada ou referência não mapeada.

Uma referência de ligação retém o acesso ao objeto no aplicativo em teste até que o registro à referência seja explicitamente cancelado. O Functional Tester cancela o registro de referências de limite apenas na finalização completa da reprodução, não na finalização do script. Enquanto existir uma referência de limite no objeto, o Functional Tester poderá evitar que o objeto no aplicativo seja inteiramente livre. Por exemplo, enquanto você mantiver uma referência de limite para um objeto Java™, o objeto Java não será coletado como lixo. É necessário cancelar explicitamente o registro de todas as referências de ligação criadas tão logo não sejam mais necessárias.

Em um script normal do Functional Tester, os únicos TestObjects que contêm referências mapeadas são aqueles dos scripts auxiliares. Os outros TestObjects contêm referências de ligação e devem ter o registro cancelado. Por exemplo, o método TestObject.getTopParent é declarado explicitamente para retornar um TestObject. Os outros métodos são declarados para retornar um java.lang.Object, mas podem retornar um TestObject que deve ter o registro cancelado -- por exemplo, TestObject.getProperty.

O RationalTestScript contém vários métodos que removem referências a TestObjects, incluindo com.rational.test.ft.script.RationalTestScript.unregister e unregisterAll. Consulte a Referência à API do Functional Tester para obter informações sobre esses métodos.

Os objetos que são retornados do aplicativo em teste que não são TestObjects são objetos que representam um valor. O tipo desse objeto é referido como classe de valor. Uma classe de valor é uma cópia do objeto no aplicativo em teste, não uma referência a um objeto nesse aplicativo. Exemplos comuns de classes de valores são java.lang.Integer e java.awt.Rectangle.

O gravador e os assistentes do Functional Tester somente geram código que retorna classes de valores. Por exemplo, uma propriedade que você vê na etapa de teste de Propriedades do Objeto é aquela cujo valor é uma classe de valor. Você pode chamar TestObject.getNonValueProperties para localizar as propriedades de referências disponíveis para um determinado objeto. Você pode chamar TestObject.getMethods para ver a lista de todos os métodos que poderiam ser chamados ao chamar TestObject.invoke.

Cuidado ao lidar diretamente com TestObjects que contenham referências a objetos no aplicativo em teste, porque isso pode criar instabilidade no aplicativo. Cancele o registro desses TestObjects o mais rápido possível.


Feedback