In article <kihkbt$2lu$
1...@newsreader4.netcologne.de>, Patrick Roemer
(
sang...@netcologne.de) says...
>
> Responding to Jochen Theodorou:
> > Am 21.03.2013 22:39, schrieb Volker Borchert:
> >> Jochen Theodorou wrote:
> >>> Ich meine garnicht geht. Zum Beispiel eine Methode machen, die eine
> >>> checked Exception wirft, dies in der Signatur aber nicht ausweist.
> >>
> >> Das geht auch so, ist ein ziemlich gruseliger Trick mit Generics, der
> >> darauf beruht, daᅵ die Typprᅵfung des generischeb Rᅵckgabewerts einer
> >> Methode beim Aufrufer im Anschluᅵ an den Aufruf erfolgt und deshalb
Habe ich letztens fᅵr Unit-Tests gut gebrauchen kᅵnnen, mangels
verfᅵgbarkeit von EasyMock oder ᅵhnlichem.
Sah etwa so aus:
TestImplementation implements MyInterface{
Throwable doSomethingException;
@Override
public void doSomething() throws SomeCheckedException{
if(doSomethingException != null){
Unchecked.rethrow(doSomethingException);
}
//do something test related, count number of invocations, etc
}
}
mit:
@Test
public void testWhateverCallsDoSomethingRuntimeEx(){
TestImplementation mock = new TestImplementation();
mock.doSomethingException = new RuntimeException("TestRuntimeEx");
objectUnderTest.setMyInterface(mock);
objectUnderTest.doWhateverCallsSoSomething();
//TODO: check if exception was handled;
}
@Test
public void testWhateverCallsDoSomethingSomeCheckedEx(){
TestImplementation mock = new TestImplementation();
mock.doSomethingException = new SomeCheckedEx("TestCheckedEx");
objectUnderTest.setMyInterface(mock);
objectUnderTest.doWhateverCallsSoSomething();
//TODO: check if exception was handled;
}
Es gibt aber, habe ich jᅵngst gelernt, einen einfacheren Ansatz, um
Exceptions zu "unchecken", der ist nicht minder dreckig und liest sich
irgendwie noch gefᅵhrlicher als der Generics-Hack:
import java.io.FileNotFoundException;
public class SimpleExceptionUncheckNoGenerics {
public static void main(final String[] args) {
try {
Thread.currentThread().stop(new FileNotFoundException("test"));
} catch (Exception e) {
System.out.println("Hello!");
e.printStackTrace();
}
}
}
Gruᅵ,