Ant+JUnit não tá rolando

2 respostas
D

Estou tentando fazer o Ant executar os testes unitários e não rola. A classe de teste se parece com a seguinte:

package a.b.c;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class AlgoTest extends TestCase {

      public AlgoTest(String testName) {
            super(testName);
      }

      public static Test suite() {
            TestSuite suite = new TestSuite();
            suite.addTest(new AlgoTest("testAlgo1"));
            suite.addTest(new AlgoTest("testAlgo2"));
            return suite;
      }

      public void testAlgo1() {
            // algo para testar 1...
      }

      public void testAlgo2() {
            // algo para testar 3...
      }

}

A target Ant fiz assim:

...
      <target name="junit" depends="compile-tests">
          <junit printsummary="on"
                 fork="false"
                 haltonfailure="false"
                 failureproperty="tests.failed"
                 showoutput="true">
              <formatter type="plain" usefile="false"/>
              <batchtest>
                  <fileset dir="${build}">
                      <include name="**/*Test.class"/>
                  </fileset>
              </batchtest>

          </junit>

          <fail if="tests.failed">
          ***
          OS TESTES FALHARAM!
          ***
          </fail>
      </target>
   ...

Se eu executo a classe diretamente com java a.b.c.AlgoTest rola direitinho (claro que eu coloco um método main() chamando a suite de testes com o TestRunner).

Alguém pode me ajudar?

O erro que dá é o seguinte:

[junit] Running a.b.c.AlgoTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
[junit] Testsuite: a.b.c.AlgoTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

[junit] Null Test Caused an ERROR
[junit] a.b.c.AlgoTest
[junit] java.lang.ClassNotFoundException: a.b.c.AlgoTest
[junit] 	at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
[junit] 	at java.security.AccessController.doPrivileged(Native Method)
[junit] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
[junit] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
[junit] TEST a.b.c.AlgoTest FAILED
[junit] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
[junit] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
[junit] 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
[junit] 	at java.lang.Class.forName0(Native Method)
[junit] 	at java.lang.Class.forName(Class.java:141)

2 Respostas

danieldestro

Acho que você tem que indicar o diretório das classes no classpath do seu build.xml.

D

Hmmm é isso mesmo! Rolou.
É que o projeto é um grupinho de classes utilitárias e simplesmente não dependendia de lib nenhuma. Então eu criei um:

<path id="master-classpath"> <pathelement path="${build}"/> </path>

E fiz referencia à ele dentro da task junit com <classpath refid=“master-classpath”/>. Daí rolou redondo.

Valeu, Daniel. :slight_smile:

Criado 3 de abril de 2005
Ultima resposta 4 de abr. de 2005
Respostas 2
Participantes 2