Digamos que você tenha testes para dois métodos de uma classe. O primeiro método reúne dados de outra camada e os coloca em algum tipo de armazenamento independente do tempo de execução (como uma tabela SQL), para que todos os dados manipulados por esse teste sejam codificados no teste. O segundo método é responsável por coletar dados de onde o primeiro método os deixou e transformá-los de alguma forma (cálculo, mover determinadas partes para outro lugar etc.).
Agora, este segundo método pode ter entradas codificadas como o primeiro, ou pode-se presumir que os dois testes seriam executados seqüencialmente e poderia continuar onde o primeiro teste parou, pegando os dados realmente armazenados pelo primeiro teste.
Se você seguisse a segunda opção, teria realmente uma boa idéia de que os dois métodos funcionam bem juntos; no entanto, se o 1º teste falhar, todos os testes depois dele falharão, tirando o benefício do teste, ajudando a isolar os bugs mais rapidamente.
Se você seguisse a primeira opção, cada método seria isolado e testado de forma independente, mas você nunca saberia realmente que eles podem realmente funcionar juntos corretamente.
Qual é a melhor opção aqui? Existe algum tipo de alternativa como ter um único teste para cada método isolado com codificação codificada e testes maiores que contêm os dois métodos em um?