为了账号安全,请及时绑定邮箱和手机立即绑定

用于测试上下文的 Web 应用程序上下文 [...]必须配置模拟软件上下文。

用于测试上下文的 Web 应用程序上下文 [...]必须配置模拟软件上下文。

浮云间 2022-09-21 17:38:37
这是有问题的测试:import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit.jupiter.SpringExtension;@ExtendWith(SpringExtension::class)@SpringBootTestclass SpringUITestApplicationIT {    @Test    fun contextLoads() {    }}当自己执行时,工作完全正常。但是,当在此测试之后执行它时:package ch.cypherk.springuitest.ui.vaadinimport org.junit.jupiter.api.AfterEachimport org.junit.jupiter.api.Assertions.*import org.junit.jupiter.api.BeforeEachimport org.junit.jupiter.api.Testimport org.junit.jupiter.api.extension.ExtendWithimport org.openqa.selenium.chrome.ChromeDriverimport org.springframework.boot.test.context.SpringBootTestimport org.springframework.test.context.junit.jupiter.SpringExtensionimport com.codeborne.selenide.Selenideimport com.codeborne.selenide.Selenide.`$` as Simport com.codeborne.selenide.Selenide.`$$` as SSimport com.codeborne.selenide.Selenide.*;import com.codeborne.selenide.Condition.*import com.codeborne.selenide.Selectors.*@ExtendWith(SpringExtension::class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)internal class BasicUITestIT{    @BeforeEach    fun setup(){    }    @Test    fun canOpenIndexPage(){        Selenide.open("/")        S(byText("click")).shouldBe(visible)    }}(成功),它失败与java.lang.非法状态异常:用于测试上下文的 Web 应用程序上下文 [...] 必须使用模拟副本上下文进行配置。为什么它会这样做,我该如何避免它?
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

使用 注释失败的测试


@WebAppConfiguration

@ContextConfiguration

似乎解决了这个问题,虽然我还不确定为什么


import org.junit.jupiter.api.Test;

import org.junit.jupiter.api.extension.ExtendWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit.jupiter.SpringExtension;


@SpringBootTest

@WebAppConfiguration

@ContextConfiguration

class SpringUITestApplicationIT {


    @Test

    fun contextLoads() {

    }


}


查看完整回答
反对 回复 2022-09-21
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以使用注释添加到类中。它阻止 Spring 缓存上下文。最终,就性能而言,这不是一个完美的解决方案,但在我的情况下,它解决了问题。@DirtiesContext@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)



查看完整回答
反对 回复 2022-09-21
?
冉冉说

TA贡献1877条经验 获得超1个赞

我有同样的问题,似乎也可以通过用SpringBootTest.WebEnvironment.RANDOM_PORT替换SpringBootTest.WebEnvironment.DEFINED_PORT来解决 还不知道为什么...


查看完整回答
反对 回复 2022-09-21
  • 3 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信