Java Intellij IDEA控制台日志使用TestNG运行/调试配置截断

Java Intellij IDEA控制台日志使用TestNG运行/调试配置截断,java,intellij-idea,selenium-webdriver,testng,Java,Intellij Idea,Selenium Webdriver,Testng,出于某种原因,Intellij IDEA在运行/调试配置中的“将控制台输出保存到文件”选项在我的TestNG测试运行中被截断。其他海报指出,要实际查看所有测试的控制台输出,您必须在IDEA运行窗口的树上向下钻取,在package上单击+,在test类上单击+,等等。然后单击每个测试方法以查看其控制台输出 例如: 以及: 然而,我在任何地方都没有看到一篇文章解释如何将所有这些记录到一个日志文件中。我真的不明白为什么必须将一个测试运行的控制台分解到树中的这么多地方的想法看起来有点愚蠢 无论如何,

出于某种原因,Intellij IDEA在运行/调试配置中的“将控制台输出保存到文件”选项在我的TestNG测试运行中被截断。其他海报指出,要实际查看所有测试的控制台输出,您必须在IDEA运行窗口的树上向下钻取,在package上单击+,在test类上单击+,等等。然后单击每个测试方法以查看其控制台输出

例如:

以及:

然而,我在任何地方都没有看到一篇文章解释如何将所有这些记录到一个日志文件中。我真的不明白为什么必须将一个测试运行的控制台分解到树中的这么多地方的想法看起来有点愚蠢

无论如何,我在日志文件中得到的只是我的初始化类输出,但在树的更深处钻取的任何后续测试中都没有得到任何结果。非常感谢您对如何使IDEA日志与TestNG一起工作提出的任何建议

我真的不明白为什么必须将一个测试运行的控制台分解到树中的这么多地方,这似乎有点愚蠢

目的是让您可以看到与特定测试相关的输出。这样,当运行数十个或数百个测试时,您可以关注相关的输出,而不是大量与您关注的特定测试无关的噪音

然而,我在任何地方都没有看到一篇文章解释如何将所有这些记录到一个日志文件中

这通常是通过日志框架而不是IDE完成的。但在IDEA w/o日志框架中有一种方法可以做到这一点,我将在下面讨论。另一方面,Logback非常适合这种情况,因为它会自动查找特定于测试的配置文件。当然,对于其他框架,您可以设置特定于测试的配置文件

如果为运行测试创建运行/调试配置,则可以将日志文件的输出添加到“运行输出工具”窗口中的选项卡中。在运行/调试配置中,单击日志选项卡并添加日志框架写入的日志。您还可以对其进行设置,以便选项卡中只显示新的/新的输出,从而防止您看到以前运行的日志记录

还可以选择“将控制台输出保存到文件”选项

最后,您可以组合上述两种设置,以便将控制台输出记录到文件中,并在第二个选项卡中显示输出


如果希望其中一个设置为默认设置,可以在默认单元测试配置中进行设置。展开运行/调试配置窗口中的默认部分运行>编辑配置。当设置在那里时,任何新的运行/调试单元测试配置(即使是通过Ctrl+Shift+F10动态创建的临时配置)都将具有这些设置。请注意,默认值仅适用于当前项目。如果要将该设置设置为所有未来项目的全局默认设置,请从欢迎屏幕(即关闭所有项目)转到“配置>项目默认设置>运行配置”,并在那里进行设置。

IDEA的TestNG支持会产生影响。不管您是查看控制台输出还是记录到文件,输出都会被截断。请随意投票:也许他们最终会修复它。

这是因为您无法成功运行单元测试,因为存在异常,而不是预期的结果和错误。一旦单元测试成功运行,输出将在控制台中


我知道在控制台中添加系统输出可以帮助您通过单元测试进行调试,但不幸的是IntelliJ不支持它。

Mark,谢谢您的反馈。也许你错过了我的评论“将控制台输出保存到文件”,所以我已经在运行配置中使用了你的建议:我已经使用testNG在报告中进行了日志记录。。。我想做的是创建一个单独的日志文件,其中包含所有控制台数据,所有级别的套件/类/方法都连接到一个日志文件中。是的,我明白了为什么每个方法都需要单独的控制台输出,这样您可以单击该方法并查看它自己的输出,但我不明白为什么IDEA只将套件级初始化输出放在“将控制台输出保存到文件”的日志中。Logback是一个解决方案吗?再次感谢您的详细回复。简而言之,我只想让Intellij IDEA将所有控制台输出记录到一个日志文件中。下面的答案虽然详细,但没有帮助。尽管如此,所有的方法System.out.println调用仍然丢失,只有套件级日志记录在IDEA中工作。