我是junit测试的新手,我想编写单元测试。实际上这些方法不会返回任何内容。它采用信号列表并将其写入csv文件。我不知道如何使用void返回类型测试方法。
任何人都可以帮助我?
public void createCSV ( final ArrayList< Signal > messages, File file )
{
try
{
// Use FileWriter constructor that specifies open for appending
csvOutput = new MyWriter( new FileWriter( file, false ), ',' );
// Create Header for CSV
csvOutput.writeRecord( "Message Source" );
csvOutput.writeRecord( "Message Name" );
csvOutput.writeRecord( "Component" );
csvOutput.writeRecord( "Occurance" );
csvOutput.writeRecord( "Message Payload with Header" );
csvOutput.writeRecord( "Bandwidth(with Header %)" );
csvOutput.writeRecord( "Message Payload" );
csvOutput.writeRecord( "Bandwidth(%)" );
csvOutput.endOfRecord();
for ( Signal signal : messages )
{
csvOutput.writeRecord( signal.getSource() );
csvOutput.writeRecord( signal.getName() );
csvOutput.writeRecord( signal.getComponent() );
csvOutput.writeRecord( Integer.toString( signal.getOccurance() ) );
csvOutput.writeRecord( Integer.toString( signal
.getSizewithHeader() ) );
csvOutput.writeRecord( Float.toString( signal
.getBandwidthWithHeader() ) );
csvOutput.writeRecord( Integer.toString( signal.getSize() ) );
csvOutput.writeRecord( Float.toString( signal.getBandwidth() ) );
csvOutput.endOfRecord();
}
}
catch ( IOException e )
{
logger.error( "Error in writing CSV file for messages", e );
}
finally
{
try
{
if ( csvOutput != null )
{
csvOutput.flush();
csvOutput.close();
}
messages.clear();
}
catch ( IOException ex )
{
ex.printStackTrace();
}
}
}
}
答案 0 :(得分:3)
一个人拿一张地图并对其进行排序。
传入包含已知未排序值的地图。验证在调用方法后地图已经过排序。
另一个获取有序映射并将其写入csv文件。我不知道如何使用void返回类型测试方法。
两个选项:
传入临时文件路径,例如请参阅JUnit temporary folders,然后在调用方法后读取该文件并测试其正确性。
调整您的方法以接受OutputStream
而不是File
。然后,您可以通过调用ByteArrayOutputStream
并检查字节来传递toByteArray()
并验证其内容。
答案 1 :(得分:1)
文件的单元测试
如果您不想更改src代码:
在单元测试中,我会将文件传递给临时路径,调用它创建csv方法和 然后打开文件并依赖您想要投入多少精力:
检查
1)如果文件存在(使用包含当前时间的文件名)
2)检查长度是否大于0字节
3)阅读第一行和最后一行并检查预期内容
但在大多数情况下,OutputStream
比File
参数更灵活
在生产代码中,您在单元测试FileOutputStream
中传递了ByteArrayOutputStream
,您可以使用ByteArrayInputStream
进行解析。
这是更清洁的解决方案,因为它不会创建应该清理的文件,而且运行速度更快。
排序单元测试 只需创建一个未排序的地图。叫你排序,并检查要排序的结果: 迭代并检查每个下一个元素是否大于前一个元素(或者更小,具体取决于排序顺序)
只需