如何为使用JUnit运行的SpringTestMVC测试显示完整的堆栈竞争



当运行JUnit测试时发生异常(测试范围外的意外异常)时,不会打印堆栈跟踪。只有Exception消息是。例如,我将使用JUnit向现有的SpringMVC项目添加单元测试。我有一个像这样的空测试:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("file:src/main/webapp/WEB-INF/my-servlet.xml")
public class UserAccessTest {
    @Autowired
    private WebApplicationContext webApplicationContext;
    @Test
    public void test01() {}
}

但它失败了,消息是:

Tests in error: 
  test01(com.myproject.UserAccessTest): Failed to load ApplicationContext

然而,它并没有打印整个堆栈跟踪,包括根本原因等。另一个例子是,当我使用Mockito时忘记模拟某些对象时,会出现NullPointerException。在这种情况下,它甚至不会给出消息,直到我在测试中添加了一个try-catch块后,我才发现它是NullPointerException,然后直到我添加代码手动打印catch中的所有StackTraceElement,我才知道它在哪里!

当测试过程中出现异常时,是否可以打印整个堆栈?

我正在使用Maven和IntelliJ IDEA。但我不确定这是否是我必须在其中任何一个中配置的东西。我已经找到了这个有点相关的答案,但1)它涉及构建服务器上的Ant,2)如果该配置适用于我,我不知道该将其放在哪里,因为答案中没有提到这一点。

请注意:我不是在请求帮助解决示例中的问题。我只是想知道如何让JUnit提供更多关于此类问题的信息,以便我自己进一步调试它。

有一些surefile插件设置(例如maven surefire插件useFile参数设置为false)可以控制这一点,请参阅此

最新更新