2 Stimmen

Verwendung von @Override in JUnit4

Ich verwende Selenium RC und JUnit, um Tests zu schreiben. Wenn ein @Test fehlschlägt, möchte ich einen Screenshot machen, aber ich möchte einen bestimmten Screenshot-Namen verwenden, der von der Funktion Test Klasse.

Derzeit habe ich :

@Rule  
public ScreenshotRule email = new ScreenshotRule();  

@Test  
public void testLogin() throws InterruptedException {  
    MyTest someTest = new MyTest(selenium);   
    someTest.someMethod (); // if anything assert fails in this method, i want to take a shot and call it a name which i will pull from the MyTest class.
}

Hier ist die Screenshot Klasse :

public class ScreenshotRule extends TestWatchman {  
    @Override  
    public void failed(Throwable e, FrameworkMethod method) {  
        System.out.println(method.getName() + " failed");  
        // At this point I wish to take a screenshot and call  
    }  
}

Wie übergebe ich also eine String arg vom MyTest Klasse zum Screenshot Klasse?

1voto

skaffman Punkte 389758

En TestWatchman Die Signatur erlaubt es Ihnen nicht, zusätzliche Informationen zu übermitteln, so dass Sie mit dem arbeiten müssen, was Sie haben.

Zum Beispiel, die FrameworkMethod Klasse hat Methoden zum Abrufen der Unit Test's java.lang.reflect.Method Objekt, so dass Sie könnte verwenden Sie einfach den Namen des Method Objekt für Ihr Bildschirmfoto. Es ist nicht das, was Sie wollten, aber besser als nichts.

Sie könnten auch die getDeclaringClass() über die Method zu holen, um die Class die die Testklasse repräsentiert, aber Sie werden nicht in der Lage sein, die Instanz dieser Klasse, was sehr nützlich wäre.

P.S. Ich bin mir nicht sicher, was @Override mit Ihrer Frage zu tun hat. Inwiefern ist sie relevant?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X