如何解决JUnit4:测试类型为ArrayList的读取文件方法
我已经编写了一个测试,以检查我的读取.txt文件的java方法是否可以成功执行
@Test
public void testRead() {
String filePath = "testpackread.txt";
ArrayList<Card> testReaderMethod = FileManager.readFile(filePath);
assertEquals(4,testReaderMethod);
}
我打开的文件包含数字4,如果它读取的第一行为4,我想做的就是测试通过
测试运行并且方法成功,所以问题不在于我如何编写方法。 命令行中的输出显示:
java.lang.AssertionError: expected:<4> but was:<[project.Card@3043fe0e]>
如果有帮助,这是正在测试的方法:
public static ArrayList<Card> readFile(String packPath){
ArrayList<Card> cardDeck = new ArrayList<>();
int cardNumber;
BufferedReader in = new BufferedReader(new FileReader (packPath));
String line = in.readLine();
while(line!= null){
cardNumber = Integer.parseInt(line);
if (cardNumber > 0) {
cardDeck.add(new Card(cardNumber));
line = in.readLine();
}else {//If found invalid card stop immediately and clear cardDeck
System.out.println("[Message] : Integer must be positive");
cardDeck.clear();
line = null;
}
in.close();//Close file reader
return cardDeck;
}
非常感谢您的帮助,我希望我已经清楚
解决方法
您的断言等同于:
if (Integer.valueOf(4).equals(Arrays.asList(new Card(4))))
如果您尝试这样做,它也将不起作用,对吧?
也许(如果Card
实现了equals
):
assertEquals(Arrays.asList(new Card(4)),testReaderMethod);
或
assertEquals(1,testReaderMethod.size());
assertEquals(4,testReaderMethod.get(0).getCardNumber());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。