Junit을 사용하여 테스트를 진행하고, 결과 중 fail된 case만 따로 다시 수행시켜보는 방법 보다는
fail된 case를 바로 더 돌리도록 해서 그 이후에 결과를 확인하는 것이 더 좋을 때가 있다.
이럴 때는 TestRule을 이용해서 JUnit Retry를 구현하는 방법을 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; public class JUnitRetry implements TestRule { private int retryCount; public JUnitRetry(int retryCount) { this.retryCount = retryCount; } @Override public Statement apply(Statement base, Description description) { return statement(base, description); } private Statement statement(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { Throwable caughtThrowable = null; // implement retry logic here for (int i = 0; i < retryCount; i++) { try { base.evaluate(); return; } catch (Throwable t) { caughtThrowable = t; System.err.println(description.getDisplayName() + ": run " + (i+1) + " failed"); } } System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures"); throw caughtThrowable; } }; } } | cs |
위와 같이 JUnitRetry 클래스를 만들어 놓고, 테스트코드에서는 Rule을 사용하여 Retry 를 몇번 할지 횟수만 지정하고 사용하면 된다.
1 2 | @Rule public JUnitRetry retry = new JUnitRetry(2); | cs |
'QA > Test Automation' 카테고리의 다른 글
selenium javascript 로딩 완료될때 까지 wait 하기 (0) | 2018.07.19 |
---|---|
테스트 진행전 windows에서 chrome webdriver kill 하기 (0) | 2018.02.05 |
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |