【发布时间】:2019-07-16 05:48:43
【问题描述】:
由于我的另一个问题here 没有得到答案,我正在寻找另一种方法。有没有办法在单元测试期间不执行或不包含片段?
我想在模板的页脚中显示版本和内部版本号,因此我有以下行:
<div class="versionInfo">Version <span th:text="${@buildProperties.getVersion()}"></span></div>
这在运行应用程序时效果很好,但在单元测试期间出现异常:
没有名为“buildProperties”的 bean 可用
在另一个问题中,我正在寻找一种在单元测试期间获取此 bean 的方法,作为替代方案,我现在正在寻找一种在单元测试期间排除此模板的方法。像这样的:
<div class="versionInfo" th:if="${!isUnitTest}">Version <span th:text="${@buildProperties.getVersion()}"></span></div>
我在我的测试类中使用以下注释:
@RunWith(SpringRunner.class)
@WebMvcTest(SimpleController.class)
【问题讨论】:
-
能否分享一下java代码。 1.您是否自动装配了该类并且 buildProperties 在上下文中可用? 2. 你是否使用了 Mock 或任何 ReflectionTestUtils ? ReflectionTestUtils.setField("yourClass", buildProperties, objectBuildProperties)
-
buildProperties 的问题在于,它是从 spring 构建时自动生成的:docs.spring.io/spring-boot/docs/current/reference/html/…
-
你在测试类中使用@SpringBootTest吗
-
@MebinJoe 不,我使用
@WebMvcTest作为。我也用@SpringBootTest尝试过,但是MockMvc没有按预期工作。 -
你得到了什么异常?
标签: unit-testing spring-boot thymeleaf