Ciao a tutto, sto cercando di capire per quale motivo un test di junit mi da un errore che proprio non mi riesco a spiegare!!! posto sotto i vari pezzi di codice
1) codice della classe del test d Junit:
codice:
package it.polito.po.test;
import java.util.List;
import elezioni.Candidato;
import elezioni.Elezione;
import elezioni.TentatoDoppioVoto;
import junit.framework.TestCase;
public class TestR4_Risultati extends TestCase {
Elezione sistema;
public void testPreferenzeCandidato() {
List<Candidato> esito = sistema.esito();
assertEquals(2,esito.get(0).getPreferenzeDocenti());
assertEquals(0,esito.get(0).getPreferenzeStudenti());
assertEquals(0,esito.get(0).getPreferenzePTA());
assertEquals(2,esito.get(1).getPreferenzeStudenti());
assertEquals(1,esito.get(2).getPreferenzePTA());
}
}
Riporto inoltre che il metodo:
List<Candidato> esito = sistema.esito();
è stato testato in precedenza allo stesso identico modo e funziona perfettamente.
2) qui invece riporto parte della classe Candidato:
codice:
package elezioni;
public class Candidato {
private int numero;
private String nome;
private String cognome;
private double voti=0;
private int preferenze[] = new int[4];
public Candidato ( String nome, String cognome, int codice ) {
this.nome = nome;
this.cognome = cognome;
this.numero = codice;
for ( int i=0; i<4; i++ ) {
preferenze[i] = 0;
}
}
public int getPreferenzeDocenti() {
return preferenze[Elezione.DOCENTE];
}
public int getPreferenzeStudenti(){
return preferenze[Elezione.STUDENTE];
}
public int getPreferenzePTA(){
return preferenze[Elezione.PTA];
}
}
Nella classe di test si ha un errore in questa riga:
assertEquals(2,esito.get(0).getPreferenzeDocenti() );
ripeto...un ERRORE...non un failure....quindi significa proprio che c'è qualcosa che non va.....inoltre l'errore è:
codice:
java.lang.NoSuchMethodError: elezioni.Candidato.getPreferenzeDocenti()J
at it.polito.po.test.TestR4_Risultati.testPreferenzeCandidato(TestR4_Risultati.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Vedendo comparire la scritta:
java.lang.NoSuchMethodError: elezioni.Candidato.getPreferenzeDocenti()
penso che il metodo manca nella classe Candidato....invece....c'è....per quale motivo viene generato st'errore?? non riesco proprio a venirne a capo!
se qualcuno riesce a darmi una mano...grazie!