簡體   English   中英

Spring參數化JUnit測試與寧靜

[英]Spring parametrized JUnit Tests with Serenity

我正在尋找解決方案如何在使用JUnit runner的serenity bdd frameworkk中使用spring集成。 問題是我不能在測試數據收集方法中使用方法,因為它是靜態的。

我使用了來自該線程的一些answears,但它不起作用。 也許我在解釋中遺漏了一些東西。 Spring參數化/理論JUnit測試

@RunWith(SerenityParameterizedRunner.class)
@Concurrent(threads = "5")
public class PlayerTest {

    private Player player;

    public PlayerTest (Player player) {
        this.player = player;
    }

    @Inject
    PlayerService playerService;

    @TestData
    public static Collection<Object[]> testData() {
        return playerService.getPlayers()
                .stream()
                .map(it -> new Object[]{it})
                .collect(Collectors.toList());
    }

    @Steps
    FeedsSteps feedsSteps;

    @Test
    @Title("Check player data")
    public void testPlayer() {
        feedsSteps.checkPlayer(player);
    }

}

基本上每個看起來都很好,但我不能使用playerService,因為testData是靜態的。 我正在嘗試找到一些解決方案如何使用我服務中的方法。

終於找到了我的問題的解決方案。 問題是你需要在靜態方法中收集測試數據之前初始化spring上下文,而不是注入它。 每次測試后都會看起來像這樣:

@RunWith(SerenityParameterizedRunner.class)
@Concurrent(threads = "5")
public class PlayerTest {

    private Player player;
    private static PlayerService playerService;

    public PlayerTest (Player player) {
        this.player = player;
    }

    private static synchronized void initBeans() {
        if(context == null)
        {
            context = new AnnotationConfigApplicationContext("com.package.service");
        }
        playerService = context.getBean(PlayerServiceImpl.class);
    }

    @TestData
    public static Collection<Object[]> testData() {
        return playerService.getPlayers()
                .stream()
                .map(it -> new Object[]{it})
                .collect(Collectors.toList());
    }

    @Steps
    FeedsSteps feedsSteps;

    @Test
    @Title("Check player data")
    public void testPlayer() {
        feedsSteps.checkPlayer(player);
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM