如何显示使用JUnit运行的Spring Test MVC测试的完整堆栈跟踪

时间:2014-09-15 23:07:46

标签: java maven junit intellij-idea

当运行JUnit测试时出现异常(测试范围之外的意外异常)时,不会打印堆栈跟踪。只有Exception消息。例如,我正在使用JUnit将单元测试添加到现有的Spring MVC项目中。我有一个空的测试:

@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,然后直到我添加代码才能手动打印捕获中的所有StackTraceElements,我发现它在哪里!

在测试期间发生异常时,是否可以打印整个堆栈跟踪?

我正在使用Maven和IntelliJ IDEA。我不确定这是否是我必须在其中任何一个中配置的东西。我发现this somewhat related answer但是1)涉及构建服务器上的Ant 2)我不知道如果它适用于我我将不得不放置该配置,因为答案中没有提到。

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

1 个答案:

答案 0 :(得分:2)

有一些surefile插件设置(例如maven-surefire-plugin useFile参数设置为false)来控制它,请参阅this