gpt4 book ai didi

java - 使用@beforeeach设置一次性代码进行测试

转载 作者:行者123 更新时间:2023-12-01 16:57:29 25 4
gpt4 key购买 nike

所以我必须创建一个集成测试,并且我只需要设置代码一次,而不是在每次测试之前。我检查了很多文章,似乎 JUnit 没有提供任何可以帮助我们编写这样的代码的东西。我通过使用下面的结构找到了一种有效的方法来解决这个问题,但它对我不起作用。

private static boolean setUpIsDone = false;

@BeforeEach
public void createGame() {
if (setUpIsDone) {
return;
}
//setupcode
setUpIsDone = true;
}

虽然这应该有效,但它对我不起作用。

我的集成测试代码 -

public class GameServiceIntegrationTest {

@Autowired
private GameService gameService;
@Autowired
UserService userService;

private Game testGame;
private long gameId=-1;
private static boolean setUpIsDone = false;

@BeforeEach
public void createGame() {
/*
if (setUpIsDone) {
return;
}*/

User testUser = new User();
testUser.setUsername("gamer");
testUser.setPassword("123");
testUser = userService.createUser(testUser);

List<Long> playerIdList = new ArrayList<>();
playerIdList.add(testUser.getId());


gameId = gameService.createGame(playerIdList);
testGame = gameService.getExistingGame(gameId);
// setUpIsDone = true;
}

@Test
public void chooseWord(){

System.out.println("game id here1 ->"+gameId);
int chooseIndex = 1;
gameService.chooseWord(gameId,chooseIndex);
testGame = gameService.getExistingGame(gameId);
assertEquals(testGame.getWordIndex(),0);

}

我想在我进一步继续的每个其他测试中使用 gameId 变量。如果我使用当前版本的代码,则会收到对象已创建但失败的异常。因此,似乎在每次测试之前都执行了设置,并且最后的测试值仍然存在。

如果我取消注释 setupIsDone 进程的代码,我在其他测试类中得到的 gameId 为 -1。因此,在第一次测试后,该值似乎并没有持续存在。

是否有任何方法可以在设置阶段保存数据以用于测试克服上述问题?

最佳答案

如何将 testGame 声明为 static,然后检查 createGame() 顶部是否 testGame == null

关于java - 使用@beforeeach设置一次性代码进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com