Использование @Override в JUnit4 - PullRequest
2 голосов
/ 02 апреля 2011

Я использую Selenium RC и JUnit для написания тестов. В случае сбоя @Test я хотел бы сделать снимок экрана, но я хочу использовать конкретное имя снимка экрана, которое передается из класса Test.

В настоящее время у меня есть:

@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.
}

Вот класс Screenshot:

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  
    }  
}

Так как мне передать String arg из класса MyTest в класс Screenshot?

1 Ответ

1 голос
/ 02 апреля 2011

Подпись TestWatchman не позволяет вам передавать какую-либо дополнительную информацию, поэтому вам придется работать с тем, что у вас есть.

Например, класс FrameworkMethod имеет методы для извлечения устройстватестовый java.lang.reflect.Method объект, так что вы можете просто использовать имя этого Method объекта для своего скриншота.Это не то, что вы хотели, но лучше, чем ничего.

Вы также можете вызвать getDeclaringClass() на Method, чтобы получить Class, представляющий тестовый класс, но вы не сможетечтобы получить экземпляр этого класса, что было бы полезно.

PS Я не уверен, что @Override имеет отношение к вашему вопросу.Насколько это актуально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...