Dan*_*Bak 4 java testing junit unit-testing
我有一个方法从标准输入读取行并将行写入标准输出.
在JUnit测试中,如何将输入发送到方法,以及如何捕获其输出以便我可以对其进行断言?
Mik*_*kis 17
您不应该有一个从标准输入读取并写入标准输出的方法.
你应该有一个方法,它接受InputStream
它所读取的参数以及PrintStream
它所写入的参数.(这是一个应用程序,在方法级别,称为依赖注入(维基百科)的原则,通常在类级别使用.)
然后,在正常情况下,您调用该方法传递它System.in
并System.out
作为参数.
但是当你想测试它时,你可以传递它InputStream
和PrintStream
你为测试目的而创建的.
所以,你可以沿着这些方向使用:
void testMyAwesomeMethod( String testInput, String expectedOutput )
{
byte[] bytes = testInput.getBytes( StandardCharsets.UTF_8 );
InputStream inputStream = new ByteArrayInputStream( bytes );
StringWriter stringWriter = new StringWriter();
try( PrintWriter printWriter = new PrintWriter( stringWriter ) )
{
myAwesomeMethod( inputStream, printWriter );
}
String result = stringWriter.toString();
assert result.equals( expectedOutput );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
388 次 |
最近记录: |