IDEA中如何查看System.out.println的输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA中如何查看System.out.println的输出相关的知识,希望对你有一定的参考价值。
TextView cc = (TextView)findViewById(R.id.cc);
cc.setText("Hello Word !");
System.out.println(cc);
输出信息该如何查看?本人新手,在底部的logcat中我找不到"Hello Word !"这句话啊。。。
View中的Tool Windows,Logcat点击一下就可以了或者在idea中直接输入sout,具体操作如下:
1、打开View,点击view菜单,下拉菜单中点击Tool Windows选项。
2、点击Tool Windows选项后弹出的右侧菜单,点击logcat即可查看。
3、或者在idea中直接输入sout,自动出现提示,按Tab或Enter都可以出现。
4、下图为查看System.out.println输出效果显示。
参考技术A启动后在下面会出现一个run 或者 debug 的标签(正常启动还是调试启动不同),点进去然后在server的标签里看。
我给截了个图,注意红色框框里
右侧的日志里,就会显示你要打印的东西了。
追问我的底部是这样的,跟你的不同,是版本不同嘛?右侧我找不到System.out.println()的打印语句
你截图个全屏的我看看
追问你那个版本上不是有个 Log level吗?调成info啥的试试,应该有的。
本回答被提问者和网友采纳 参考技术B 外行目测logcat是日志,而你需要找的是控制台追问在Eclipse里面System.out.println()输出语句是打印在LogCat里面显示的。最近因为公司需求换了IDEA,用的不熟,LogCat里面居然看不到System.out.println()的输出,若如你所说是在控制台里查看,请问怎么打开控制台?
参考技术C
不是挺明显的吗,就在Server 面板下的output 那个位置
View-->Tool Windows-->Logcat 点击一下就可以了
System.out.print() 在测试方法中不显示任何内容
【中文标题】System.out.print() 在测试方法中不显示任何内容【英文标题】:System.out.print() doesn't show anything in test methods 【发布时间】:2015-06-11 21:23:18 【问题描述】:我试图在我的单元测试 (@Test
mehotds) 中使用 System.out
打印一些数据,但它没有显示任何内容。但是,它在@Before
方法中可以正常工作。我正在使用带有 Maven Surefire 插件的 JUnit。
public class MyTests
@Before
void init()
System.out.println("Initializing some data..."); // <- It works.
@Test
void shouldRemoveSeries()
System.out.println("TEST: Should remove series"); // <- It doesn't.
maven-surefire-plugin
配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
谢谢。
【问题讨论】:
澄清一下:你为什么使用 System.out.println() 而不是 Logger?后者是为你写的目的而设计的 您是否尝试过以: test 开头的测试名称?有需要这个的 JUnit 版本。 作为 Junit 测试或 Maven 测试运行 看看@gclaussn的回答。 您应该更改测试的名称,而不是 maven-surefire-plugin 的配置。遵守约定。 【参考方案1】:Maven 的-Dtest=*
命令行选项似乎触发了单元测试中标准输出的显示。
按照惯例,标准输出显示在target/surefire-reports/*-output.txt
中。显然,Surefire 插件开发人员无法重用标准输出来在测试和框架之间进行许多通信。
【讨论】:
【参考方案2】:我正在使用gradle
。 System.out
和 java.util.logging.Logger
都有这个问题。我编辑了build.gradle
文件的以下部分:
test
testLogging
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
并在testLogging
下添加了showStandardStreams = true
。结果如下:
test
testLogging
exceptionFormat = 'full'
events = ["passed", "failed", "skipped"]
showStandardStreams = true
它修复了它们。
【讨论】:
在 gradle 6.6.1 上我不得不使用--info
。【参考方案3】:
我在单独的非测试类中做了一些小把戏。它没有记录器那么流畅,但是如果您正在寻找 Spring Boot 中的快速解决方案,您可以使用它。
PrintForTest.java
import org.springframework.stereotype.Controller;
@Controller
public class PrintForTest
public static void print(String input)
System.out.println(input);
MainTest.java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.junit.Assert;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class MainTest
...
@Test
public void testingSomething()
PrintForTest.print("My new System.out.print()");
Assert.assertEquals(...);
已编辑:使用静态方法,无需使用@Autowired。
【讨论】:
我看不出您的代码与仅使用System.out.println("My new System.out.print()");
之间有任何区别。为什么通过 Spring bean 打印时它可以工作?
我不知道为什么它在测试方法中不起作用。无论如何,在这种情况下 System.out.print 被从测试方法中调用,这解决了我的问题。
感谢您的回答!【参考方案4】:
也遇到了这个问题。我正在使用 gradle 来管理我的任务,并将其放在 build.gradle
文件的末尾:
test
testLogging.showStandardStreams = true
现在我看到了System.out.println(whateves)
。
【讨论】:
我需要提一下,gradle中没有使用=符号,应该只是testLogging.showStandardStreams true
这是从 2016 年的工作代码中复制和粘贴的。YMMV,所以也许不再需要使用 =
了?你要承担风险。 :)
不知道。如果您使用 kotlin 格式而不是 build.gradle 的默认 groovy 格式,可能需要它。
@AndreiChernikov 在 Java 格式的 build.gradle 中使用了 = 符号。
也适用于 JUnit 5。【参考方案5】:
要通过 System.out.println 获取书面测试的输出,您需要配置 maven-surefire-plugin 以将此输出重定向到文件中,这可以通过以下方式实现:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
redirectTestOutputToFile 选项会将 System.out.println 等的输出重定向到一个单独创建的文件中:
文档摘录:
将此设置为“true”以将单元测试标准输出重定向到文件 (在报告目录/testName-output.txt 中找到)。
除此之外,System.out.println 通常在单元测试中没有意义。
【讨论】:
【参考方案6】:这听起来对我来说很熟悉,所以我假设您正在从某个 IDE(Netbeans?)运行您的测试。它可能只显示失败的测试的输出。从控制台运行测试时也会出现这种情况吗?
使用System.err
而不是System.out
可能会更幸运,但我不确定。
【讨论】:
【参考方案7】:问题是您的测试类的名称。要在构建中的测试阶段被识别(由 Maven surefire 插件),它必须命名为“*Test”:
Inclusions and Exclusions of Tests
【讨论】:
【参考方案8】:使用Log
private static Logger log = Logger.getLogger(LoggingObject.class);
log.info("I'm starting");
或System.setOut()
private final PrintStream stdout = System.out;
private final ByteArrayOutputStream output = new ByteArrayOutputStream();
private TerminalView terminalview;
【讨论】:
我已经尝试过使用 Logger,但它仍然没有显示任何内容。测试没有通过,我的意思是,它们运行时出错,这可能是日志记录不起作用的原因吗? 你在测试中遇到的任何东西,理论上都将成为被评估的候选者,所以也许测试正在捕获日志作为测试的一部分,这就是为什么 a) 控制台中没有结果 b) 测试未能通过.. . 检查System.setOut()
链接,我将能够创建一个函数来打印您想要的内容,而不会弄乱测试... ;)
它对我不起作用 :( 并且Logger
在 @Before 方法中不起作用,同时 System.out.print() 起作用。
日志链接已损坏。
什么是终端视图?它不是标准的 Java 类。以上是关于IDEA中如何查看System.out.println的输出的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 System.out.print(Arrays.toString(a)) [关闭]
java中System.out.print()与System.out.println()与System.out.printf()的差别
JAVA中System.out.println和System.out.print有什么区别
JAVA中System.out.println和System.out.print有啥区别?