我制作了一个包含列表的GUI。在该列表中进行选择时,通过用户单击列表选择,将执行某些操作。我希望能够测试该动作,而不必通过GUI进行实际选择。
例如,我有我的GUI.java和单独的GUITest.java。我想做类似java - 如何编写自己的ListSelectionEvent?-LMLPHP的事情

valueChanged()是Java接口ListSelectionListener中的方法,并且仅接受ListSelectionEvent类型的参数。因此,最终,我将如何创建自己的ListSelectionEvent变量来保存选择“ a”的操作?

最佳答案

我只是想到这一点,而执行同一任务比我想的要容易得多。在列表中进行选择时,方法valueChanged(ListSelectionEvent e)自动运行。考虑到这一点,我将能够使用setSelectedIndex(index)方法测试被选择的“ a”的动作。 valueChanged(...)将检测到调用所做的更改:list.setSelectedIndex(...)

public class GUI implements ListSelectionListener{
    String[] letters = {"a", "b", "c"};
    JList list = new JList(letters);
    list.addListSelectionListener(this);

    public void valueChanged(ListSelectionEvent e){
        if(list.getSelectedValue().equals("a")){
            System.out.println("Success");
        }else{
            System.out.println("Fail");
        }
    }
}


然后从我的测试课

public class GUITest{
    @test
    void testListSelection(){
        GUI t = new GUI();
        t.list.setSelectedIndex(0);
        assert(whatever test your doing);
    }
}


在JUnit测试期间涵盖了“ a”作为选定值的if语句。

关于java - 如何编写自己的ListSelectionEvent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61334657/

10-11 00:30