【问题标题】:vscode code extension java test runner neither shows a message nor a stack tracevscode 代码扩展 java 测试运行器既不显示消息也不显示堆栈跟踪
【发布时间】:2021-02-24 12:59:36
【问题描述】:

我想在运行测试时在 Java 测试报告窗口中查看我的 Junit 消息和堆栈跟踪。此窗口是名为 Java Test Runner 的 vscode 扩展的一部分。

当我运行测试时,我可以查看测试是通过还是失败。结果在堆栈跟踪和消息正文中都是 N/A(未获取)。

我试图找出为什么我的 java 测试运行程序无法在 java 测试报告中显示消息或堆栈跟踪。这就是我卡住的地方。

我尝试在 java 测试运行器的 settings.json 文件中使用 "java.test.log.level": "verbose" 运行测试。但我在 java 测试报告中看不出有什么不同。这一步基于rohinwork的一个帖子:https://github.com/microsoft/vscode-java-test/issues/702#issuecomment-492992483

这是用于解决我的问题的基本 Junit 代码类。

import static org.junit.jupiter.api.Assertions.assertTrue;


import org.junit.jupiter.api.Test;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }

}
  • 我的软件:我使用的是最新版本的vscode 1.51.1(写这篇文章的时候),最新的java 采用OpenJDK 14.0.2+12(写这篇文章时推荐的最新版本)这篇文章。
  • 我的设置:我在 Windows 本地以便携模式使用 Visual Studio 代码

【问题讨论】:

    标签: visual-studio-code junit5


    【解决方案1】:

    正如您所说,测试报告仅用于显示失败的消息或堆栈跟踪。

    鉴于您提供的示例代码,assertTrue( true ); 不会通过测试。由于测试通过,因此没有失败的消息/堆栈跟踪。这就是您在测试报告中看到N/A 的原因。

    顺便说一句,如果您想查看自己程序的一些日志,它们会打印在调试控制台中。例如,如果你的测试代码写成

    @Test
    void testMessage() throws {
        System.out.println("Hi");
    }
    

    您将在调试控制台中看到Hi

    更新

    有一个问题正在考虑跟随Java Debugger的执行位置:https://github.com/microsoft/vscode-java-test/issues/1106

    【讨论】:

    • 感谢您指出我的堆栈跟踪问题。但这仅涵盖了我的部分问题。我的另一个问题是 java 测试报告器中没有消息。如果我查看official website description of the extension 上的其他示例。我可以看到无论如何都没有必要使用它。我可以利用语法测试来指出我的代码库中的错误。
    • 只有失败的案例才会有错误消息/堆栈跟踪。如果您的测试用例通过,则报告中不会显示该通过用例的消息/堆栈跟踪。
    • 你能举一个小例子,其他人可以用它来看看消息是如何工作的吗?提前致谢!
    • 啊,我想我现在明白了。刚刚检查了当前的实现,该消息只会显示在 TestNG 框架中。这就是为什么你看不到它。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2016-03-15
    • 2011-10-18
    相关资源
    最近更新 更多