Olá Juan,
Acabo de testar o XDebug 2.0.0 RC4 num Xampp Version 1.6.6a com PHP 5.2.5 e, para minha felicidade, funcionou!
Ainda não está totalmente como eu esperava mas estou fazendo alguns testes. Pelo o que eu estou vendo, o Code Coverage funciona muito bem para os testes do CORE do Cake. Tanto o teste por Grupo, tanto o teste Individual funcionam corretamente, do mesmo modo que o
Tim Koschützki descreve em seu
blog. Porém estou tendo alguns problemas para verificar os testes da minha aplicação. Vou testar mais algumas configurações e falo com vocês qualquer progresso.
Sobre os testes, acredito que sua dúvida se dê pelo fato que os testes de Model/Component/Helper são mais do tipo Unitário e os testes de Controller e Views são mais Funcionais. Deixe eu me explicar o porque.
Quando estamos trabalhando com Modelos, Componentes e Helpers, nós trabalhamos com retorno de funções, trabalhamos com as regras de negócio de cada funcionalidade. Imaginem o exemplo de um Model que tenha a função ultimosLancamentos, nós podemos encapsular os testes para este único método. Podemos criar cenários onde conseguimos explorar as possibilidades de retorno desta única funcionalidade. Estes tipos de teste de uma funcionalidade são chamados de unitários por esta característica encapsuladora, onde podemos abstrair o resto e testar somente um único método.
Já os testes funcionais ou de aceitação, são testes que visam verificar a integridade da interação entre várias funções. Geralmente são teste que transcreve um Caso de Uso (ou História). Estamos agora em um nível mais alto de abstração, onde testamos como várias funções interagem numa lógica de negócio. Os testes de aceitação nem sempre são possíveis de serem elaborados com técnicas de teste unitário (assertEqual, assertTrue, etc.), para isto foi criado algumas ferramenta de testes de aceitação. No CakePHP e SimpleTest, temos o WebTestCase. O WebTestCase é somente um browser virtual que possui funcionalidades de verificação e automação de atividades, exemplo: podemos falar para o WTC para verificar se o URL da página é igual a /usuario/login se eu clicar em login na página inicial. Essas são geralmente os testes que fazemos em cima de Controller e Views.
Existes algumas funções interessantes que o CakePHP implementa para podermos realizar nossos testes funcionais da maneira unitária. O testAction e assertTags, todos eles possibilitam que possamos testar nossos controller e views de uma maneira unitária. Eu sei que isto, muitas vezes, não é muito trivial, as vezes nós programamos nossos Controllers e Views de maneira que não conseguimos testar. As vezes não colocamos identificadores nos nossos elementos DOM na Views (ex: muitas pessoas não utilizam o titulo para identificar a localizacao do página, muitas vezes nem modificam o titulo, com isto, fica impossível verificar a localização utilizando o titulo), ou deixamos de setar variavel no controller ou outras práticas que podem impedir o teste unitário de um Action ou Controller.
Mas isto é normal, existe mesmo esta limitação nos testes (
http://en.wikipedia.org/wiki/Test-driven_development#Limitations). O que não podemos fazer é utilizar esta limitação como desculpa para não testar. Existe um ditado no TDD que fala: Se não der para testar, não vale a pena nem programar.
Abraços.