2016-10-12 2 views
0

В интеграционной пружине JUnit мы можем расширить все классы тестов до абстрактного класса, чтобы реализовать в одном месте реализацию @Before.TestNg + Spring Интеграция как абстрактно beforeMethod

Но в TestNG, поскольку мы должны расширять все классы тестов до AbstractTestNGSpringContextTests, мы не сможем распространиться на абстрактный класс. Любая идея, как иметь абстрактный класс с @BeforeMethod, @AfterMethod в TestNG с весной?

Просьба привести пример.

ответ

1

Вы хотите что-то ищите?

Сначала построить класс, который разместится пользовательский @BeforeMethod и @AfterMethod аннотированных методов, как показано ниже:

public class LocalSpringBase extends AbstractTestNGSpringContextTests { 

    @BeforeMethod 
    public void beforeMethod() { 
     System.err.println("Another beforeMethod"); 
    } 

    @AfterMethod 
    public void afterMethod() { 
     System.err.println("Another afterMethod"); 
    } 

} 

Вы тогда ваш фактический класс теста расширить LocalSpringBase, как показано ниже:

@ContextConfiguration (locations = {"classpath:spring-test-config.xml"}) 
public class TestSpring extends LocalSpringBase { 

    @Autowired 
    EmailGenerator emailGenerator; 

    @Test() 
    void testEmailGenerator() { 
     String email = emailGenerator.generate(); 
     System.out.println(email); 

     Assert.assertNotNull(email); 
     Assert.assertEquals(email, "[email protected]"); 
    } 

} 

Включая остальную часть классов также для полноты Интерфейс

public interface EmailGenerator { 
    String generate(); 
} 

Конкретная реализация

@Service 
public class RandomEmailGenerator implements EmailGenerator { 

    @Override 
    public String generate() { 
     return "[email protected]"; 
    } 
} 

примеры были заимствованы из www.mkyong.com/

Смежные вопросы