JUnit で同じテストを行っても結果が異なります。最初のテストは問題ないようで、すべてのアサーションを検証すると、クラスは正常に機能すると思います。次に、テストを再実行すると、アサーション エラーが発生します。テスト後に「データ」をクリアしなかったことが問題であることに気付き、まさにそれを修正しようとしましたが、まだアサーションの失敗が続いています。
何か案は?
単体テスト:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* The test class TestHistorial.
*
* @author (your name)
* @version (a version number or a date)
*/
public class TestHistorial extends junit.framework.TestCase {
Historial hist;
/**
* Default constructor for test class TestHistorial
*/
public TestHistorial() {
}
/**
* Sets up the test fixture.
* <p/>
* Called before every test case method.
*/
@Before
public void setUp() {
hist = new BaseDatos();
}
/**
* Tears down the test fixture.
* <p/>
* Called after every test case method.
*/
@After
public void tearDown() {
hist.eliminarTodosLosRegistros();
}
/**
* Prueba
*/
public void testHistorial() {
for (int i = 0; i < 20; i++) {
Registro reg = new RegistroTemperatura(273 + i, 1900 + i, i + 1, i + 1, i);
try {
hist.agregarRegistro(reg);
} catch (Exception e) {
assertEquals(false, true);
} // No debería llegar aquí.
String str = "Reg_" + i;
Registro tReg = hist.getRegistroPorId(str);
try {
Temperatura t = new Temperatura(273 + i);
assertEquals(true, t.equals(((RegistroTemperatura) tReg).getTemperatura()));
} catch (Exception e1) {
assertEquals(false, true);
} // No debería llegar aquí.
try {
Fecha f = new Fecha(1900 + i, i + 1, i + 1, i);
assertEquals(true, f.equals(tReg.getFecha()));
} catch (Exception e2) {
assertEquals(false, true);
} // No debería llegar aquí.
}
assertEquals(20, hist.getNumeroDeRegistros());
assertEquals(true, hist.getRegistroMasViejo().equals(new RegistroTemperatura(273, 1900, 1, 1, 0)));
}
}
最初のテスト後のテストの出力は次のとおりです。
$> 予想: false だった: true
問題は、tearDown()
`testHistorial()` の後にメソッドが実行されているかどうかです。そうでない場合、どうすればよいですか?