Meu trabalho atual é principalmente escrever código de teste da GUI para vários aplicativos em que trabalhamos. No entanto, acho que tenho a tendência de copiar e colar muito código nos testes. A razão para isso é que as áreas que estou testando tendem a ser semelhantes o suficiente para precisar de repetição, mas não o bastante para encapsular o código em métodos ou objetos. Acho que, quando tento usar classes ou métodos de forma mais abrangente, os testes se tornam mais difíceis de manter e, às vezes, difíceis de escrever em primeiro lugar.
Em vez disso, costumo copiar um grande pedaço de código de teste de uma seção e colá-lo em outra e fazer pequenas alterações necessárias. Não uso maneiras mais estruturadas de codificação, como usar mais princípios ou funções de OO.
Outros codificadores se sentem assim ao escrever o código de teste? Obviamente, quero seguir os princípios DRY e YAGNI, mas acho que o código de teste (código de teste automatizado para testes de GUI de qualquer maneira) pode dificultar o cumprimento desses princípios. Ou eu só preciso de mais prática de codificação e um sistema geral melhor de fazer as coisas?
EDIT: A ferramenta que estou usando é o SilkTest, que está em uma linguagem proprietária chamada 4Test. Além disso, esses testes são principalmente para aplicativos de área de trabalho do Windows, mas eu também testei aplicativos da web usando essa configuração também.