2016-05-15 28 views
0

Wir haben festgestellt, dass das "Fail Fast" -Prinzip entscheidend für die Verbesserung der Wartungsfreundlichkeit unserer großen Fitnesse-basierten Testbatterie ist. Slims StopTestException ist unser Retter.Beenden von Fitnesse (Slim) bei jeder Ausnahme

Es ist jedoch sehr umständlich und kontraproduktiv, jede mögliche Ausnahme zu diesen benutzerdefinierten StopExceptions abzufangen und zu konvertieren. Und dieser Ansatz funktioniert nicht außerhalb von Fixtures. Gibt es eine Möglichkeit, Fitnesse (vorzugsweise mit dem Slim-Testsystem) zu sagen, um den Test bei einem Fehler/einer Ausnahme zu stoppen?

aktualisieren: entsprechende Feature-Request https://github.com/unclebob/fitnesse/issues/935

Antwort

0

Die meisten der Ausnahmen von Befestigungen sind möglich kommen bequem durch die Umsetzung der FixtureInteraction Schnittstelle zum StopTestException zu konvertieren, z.B .:

public class StopOnException extends DefaultInteraction { 

    @Override 
    public Object newInstance(Constructor<?> constructor, Object... initargs) throws InvocationTargetException, InstantiationException, IllegalAccessException { 
     try { 
      return super.newInstance(constructor, initargs); 
     } catch (Throwable e) { 
      throw new StopTestException("Instantiation failed", e); 
     } 
    } 

    @Override 
    public Object methodInvoke(Method method, Object instance, Object... convertedArgs) throws InvocationTargetException, IllegalAccessException { 
     try { 
      return super.methodInvoke(method, instance, convertedArgs); 
     } catch (Throwable e) { 
      throw new StopTestException(e.getMessage(), e); 
     } 
    } 

    public static class StopTestException extends RuntimeException { 

     public StopTestException(String s, Throwable e) { 
      super(s, e); 
     } 
    } 
}