Interdependência de testes com TestNG

Haw!

  Alguém já trabalhou com testes interdependentes?
  Exemplo: tenho TipoProduto e Produto, pra testar Produto preciso que o teste de inclusão de TipoProduto tenha sido realizado com sucesso, pois Produto precisa de TipoProduto. Porém não quero apenas informar as duas classes senão serão rodados todos os testes de TipoProduto (nessa situação hipotética tudo bem, mas numa situação real vou ter muita coisa e muitas dependências que não faz sentido ficar rodando).
  Uma das formas que observei para fazer isso (rodar somente o necessário) é configurando o testng.xml para rodar somente alguns grupos, mais ou menos isso:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="main">
  <test verbose="3" name="TipoProduto" enabled="true">
    <groups>
      <run>
        <include name="Produto.setUp" />
        <include name="Produto.limpar" />
        <include name="TipoProduto\..*" />
      </run>
    </groups>

    <packages>
      <package name="br.nom.scherrer.fernando.test.*" />
    </packages>
  </test>

  <test verbose="3" name="Produto" enabled="false">
    <groups>
      <run>
        <include name="TipoProduto.setUp" />
        <include name="TipoProduto.limpar" />
        <include name="TipoProduto.incluir" />
        <include name="Produto\..*" />
      </run>
    </groups>

    <packages>
      <package name="br.nom.scherrer.fernando.test.*" />
    </packages>
  </test>
</suite>

  Porém não gosto nem um pouco de ficar informando, no teste de Produto por exemplo, que devem ser rodados os testes (grupos na verdade) TipoProduto.setUp (esse na verdade é um @BeforeClass), TipoProduto.limpar e depois TipoProduto.incluir, ao invés de ter de informar apenas TipoProduto.incluir.
  Ao meu ver, eu não deveria precisar saber que o TipoProduto.incluir do qual dependo, depende de TipoProduto.limpar e que também existe um TipoProduto.setUp que deve ser rodado antes de tudo (é um BeforeClass).
  Conclusão da situação: ou eu conheço e fico informando todos os grupos dos grupos dos quais dependo devem rodar ou deixo rodar todos.

  Alguém já precisou fazer algo parecido? Tem alguma solução bonita? Ou há algum erro de conceito no tipo de teste que estou querendo fazer?

  Obs.: estou deixando os códigos hipotéticos anexo.

Valewz!

O erro neste caso é querer fazer um teste depender do outro. Isso por si só já deve ser evitado.

Seu teste para o Produto depende de um TipoProduto? Crie um durante Produto.setUp e exclua-lo no Produto.tearDown.

Quanto mais independente você conseguir manter seus testes, melhor!