当前位置: 首页 > 知识库问答 >
问题:

SpingBoot OutputCaptureRule正在引发IllegalStateException

公羊曜灿
2023-03-14

我是按照你的指示去做的https://www.docs4dev.com/javadoc/en/org/springframework/boot/spring-boot-test/2.2.2.RELEASE/org/springframework/boot/test/system/OutputCaptureRule.html

我将Maven与SpringBootStarter的父版本2.2一起使用。2.

我的测试非常简单:

@SpringBootTest(classes = MyApplication.class) // this loads Springboot context
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
@ContextConfiguration(classes = {MyTestConfig.class, AnotherTestConfig.class})
public class MyTest {


    @Rule
    public OutputCaptureRule output = new OutputCaptureRule();

    @Test
    public void theTest() {
        assertThat(output).contains("something");
    }

}

但是,当我在断言行中放置断点并尝试计算输出时。getOut(),结果是:方法抛出了“java”。lang.IllegalStateException'异常。详细信息为:未找到系统捕获。请检查您的输出捕获注册。

这项功能似乎不是现成的。知道我错过了什么吗?

共有1个答案

祁刚毅
2023-03-14

很可能是因为您正在使用JUnit5,因为SpringBoot 2.2默认提供JUnit5,但是OutputCaptureRule是JUnit4的TestRule内容,因此它不能在JUnit5下激活。

您应该在JUnit 5中使用等效的OutputCaptureExtension

@SpringBootTest(classes = MyApplication.class) 
@ExtendWith(OutputCaptureExtension.class)
public class MyTest {

    @Test
    public void theTest(CapturedOutput output) {
        assertThat(output).contains("something");
    }

}
 类似资料:
  • 我一直在寻找一种方法从我的项目中导出一个JAR文件,它总是能够播放声音文件,无论它位于哪里。为此,我编写了以下代码,返回文件的确切路径。 当我让AudioInputStream以流的形式打开文件时,它会抛出一个NullPointerException,即使URL之前有一个值。 我知道如果给AudioInputStream,就不会发生这种情况,但是导出项目时找不到该文件。如果有另一种方式来导出一个项

  • 给定Java8代码 java中的Lambdas看起来对错误处理不太友好...

  • 我正在实现自定义'AuthenticationProvider'。如果没有经过身份验证,我将在'authenticate'函数中抛出异常,如下所示。 我有全局异常处理程序,如下所示。 当在'authenticate'函数内部引发异常时,不会调用全局异常处理程序。对于所有其他例外情况,它正在被调用。我想在全局异常处理程序中捕获异常并返回自定义错误消息。我怎么能那样做?感谢任何帮助。提前道谢。

  • 我试图在处理过程中制作一个小型射击游戏,当我单击鼠标按钮时,我创建一些沿着屏幕移动的子弹,当它们离开屏幕时,它们应该消失,我使用一个在其中保存这样的值:,我的问题是,当我在下面的代码中尝试删除项目符号的索引时,我会随机得到一个异常,即使我在删除之前检查了IntList的大小。有什么帮助吗? 编辑: 我想我找到了一条线索:当我达到屏幕上有5个子弹时,异常总是会发生(此时,子弹的大小变成了10)。

  • 如何使pytest打印回溯,所以我将看到在任何函数中的哪里引发了异常?

  • 我正在使用Mojang API从Minecraft玩家的用户名返回UUID。此方法在参数(我们想要知道UUID的播放器的用户名)中接受一个字符串。为了使用API的resultat,我使用SimpleJSON库(将JSON结果解析为要返回的字符串)。 我的方法抛出2个检查过的异常:IOExeption和Parse异常,因为我想要。当错误的用户名(因此不存在用户名)时,API返回一个空JSON对象,在