Em alguns projetos desenvolvidos usando Netbeans, comecei a perceber o seguinte “bug”: só conseguir executar meus testes unitários se os debugo. Ao tentar executá-los, sempre era saudado pela mensagem “forked JVM exited abnormally”.
Postei o problema no site do projeto e em mais alguns fóruns e, para minha surpresa, ao que tudo indicava, o problema só ocorria comigo. Eis um sinal de que provavelmente o problema se encontrava entre a cadeira e o teclado. E eu dei atenção a este sinal? Bem… por MESES só executei meus testes unitários a partir do depurador, até que um belo dia, verificando as mensagens de erro impressas ao tentar profilar um teste unitário, me deparo com algo similar a “não foi possível detectar qual versão do JUnit a ser carregada”.
Hmm… o que será? Verificando as bibliotecas referenciadas pelo projeto em questão, percebo uma em particular: “junit-x.x.x.jar”. Eis que surge a solução para o problema: o Netbeans já referencia o JUnit ao executar os testes unitários (claro!). Ao incluí-lo entre as bibliotecas do PROJETO, e não de testes, o classloader da IDE se confunde e, consequentemente, não consegue executar os testes corretamente.
Removendo a referência do projeto, o que ocorreu? Os testes voltaram a funcionar sem a necessidade de debuga-los!
Valeu a dica. Solucionou meu problema.
Esse é o famoso “leak of abstraction”. :-)
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Valeu eu estava com o mesmo problema…