gpt4 book ai didi

java - 测试一个简单的 hello world 方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:35 24 4
gpt4 key购买 nike

我在 Spring 使用过 junit 测试集成测试和 Controller 测试,通常我们测试一个方法的输出,但是当我尝试在 main 方法中测试一个简单的 hello world 时,我不知道如何去做所以会喜欢想知道写什么

public class App 
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

这是一个简单的 Java 类,不知道我该如何测试它我试着写这样的东西

public void mainMethodTest() throws Exception{

System.out.println("hello world");
String[] args = null;


Assert.assertEquals(System.out.println("hello world"),App.main(args));
}

最佳答案

您可以为 System.out 变量分配一个 ByteArrayOutputStream 对象,您将引用存储在变量中。
然后调用您的 main() 方法并断言 ByteArrayOutputStream 对象的 String 内容包含预期的 String:

@Test
public void main() throws Exception{
PrintStream originalOut = System.out; // to have a way to undo the binding with your `ByteArrayOutputStream`
ByteArrayOutputStream bos = new ByteArrayOutputStream();
System.setOut(new PrintStream(bos));
// action
App.main(null);
// assertion
Assert.assertEquals("hello world", bos.toString());
// undo the binding in System
System.setOut(originalOut);
}

为什么有效?

bos.toString() 返回被测方法中传入的 "Hello World!" String:

System.out.println( "Hello World!" );

在以这种方式设置 System.out 之后:System.setOut(new PrintStream(bos));out 变量引用到装饰 bos 变量引用的 ByteArrayOutputStream 对象的 PrintStream 对象。因此,任何 System.out 调用都会在 ByteArrayOutputStream 对象中写入 byte

关于java - 测试一个简单的 hello world 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48755978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com