Función de prueba no captura la excepción esperada como el valor exigido. Se lanza una excepción como un solo error.
He intentado hacer
@Rule
ExpectedException thrown = ExpectedException.none();
@Test(expected = UnsupportedOperationException.class)
public void testNotAddingDifferentCurrency(){
Money money1 = new Money("4.43", Locale.GERMANY);
Money money2 = new Money("1.436", Locale.US);
money1.add(money2);
thrown.expect(InvalidBarcodeException.class);
}
y
@Test(expected = UnsupportedOperationException.class)
public void testNotAddingDifferentCurrency() throws UnsupportedOperationException{
Money money1 = new Money("4.43", Locale.GERMANY);
Money money2 = new Money("1.436", Locale.US);
money1.add(money2);
}
Pero sigue siendo dar respuesta:
java.lang.UnsupportedOperationException
at main.Money.add(Money.java:44)
at tests.MoneyTest.testNotAddingDifferentCurrency(MoneyTest.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Process finished with exit code -1
cuerpo de la clase de dinero:
public Money add(Money other) {
if (!compatibleCurrency(other)) {
throw new UnsupportedOperationException();
}
return new Money(amount.add(other.amount), currency);
}
@Override
public String toString() {
return decimalFormat.format(amount);
}
@Override
public boolean equals(Object o) {
Money money = (Money) o;
if (!amount.equals(money.amount)) return false;
if (!currency.equals(money.currency)) return false;
if (!decimalFormat.equals(money.decimalFormat)) return false;
return true;
}
}
Yo estaba buscando la respuesta hacia adelante sobre otros temas similares pero las respuestas se parece a mi código de seguridad. Esperanza que alguien sabe el motivo. Espero que la salida de la prueba para pasar, pero la salida real es un proceso terminado con código de salida -1 en causa de expection “.
El problema es que va a mezclar con JUnit JUnit 3 4. Al utilizar extends TestCase
en la definición de clase de prueba, usted es JUnit revelador que la clase debe funcionar como un caso de prueba JUnit 3 ( TestCase
es una clase JUnit 3).
El @Test
y @Rule
anotaciones son de JUnit 4 - el corredor de casos de prueba JUnit 3 no sabe nada acerca de estas anotaciones, por lo que ellos ginores.
Para solucionar su prueba, basta con retirar el extends TestCase
, y todo debería funcionar. La presencia de al menos una @Test
anotación es todo JUnit 4 debe interpretar una clase como un caso de prueba.