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());

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...