问题描述
我已经编写了一个测试,以检查我的读取.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());