Java 不创建UI的UI类中的测试方法
在我的个人项目中,我想进行单元测试,但我在这方面遇到了麻烦 我的项目没有一个大的逻辑层。最重要的逻辑是UI和实体之间的交互。一些例外情况是计算某天的付款和其他事情。这些事情很少改变,我想从经常改变的事情开始 例如,请看这个类:Java 不创建UI的UI类中的测试方法,java,swing,unit-testing,Java,Swing,Unit Testing,在我的个人项目中,我想进行单元测试,但我在这方面遇到了麻烦 我的项目没有一个大的逻辑层。最重要的逻辑是UI和实体之间的交互。一些例外情况是计算某天的付款和其他事情。这些事情很少改变,我想从经常改变的事情开始 例如,请看这个类: public class TabClient extends JPanel{ private JDateChooser dateChooser = ... private JButton update = ... private JButton search
public class TabClient extends JPanel{
private JDateChooser dateChooser = ...
private JButton update = ...
private JButton search = ...
private JButton delete = ...
//other components specific for this panel/component
private SomeOtherClassComponent subComponent = ...
private void initComponents()
{
update.addActionListener(ClientHandler.getUpdateListener());
//Others buttons
}
protected void mapFrom(Entitie entitie){
subComponent.mapFrom(entitie);
dateChooser.setDate(entitie.getDateFor...());
//specific components mappings
}
protected void mapTo(Entitie entitie){
subComponent.mapTo(entitie);
entitie.setDateFor...(dateChooser.getDate());
//specific components mappings
}
}
此类是我的项目中选项卡(TabbedPane
item)的一个示例
类ClientHandler
就像一个Mediator
模式,它创建(并返回)EventListener
来封装UI事件。一些事件从选项卡组件调用methodos,如mapFrom
我想为这些方法编写测试,但我不知道从哪里开始。如果使用UI框架或重构进行测试需要分离一些东西(分离什么?在哪里?),或者从单元测试开始该怎么做
现在,这个测试是用这个应用程序手工完成的
从单元测试开始我必须做什么?
我应该测试什么?与UI交互的方法或什么?为了拥有一个(容易)可测试的类,它们需要具有高度的内聚性,这可能不是您的情况
您可能想考虑将任何业务逻辑移动到特定服务或域层,以便可以更容易地测试它们。p> 正如您提到的,应用程序最重要的部分是UI,我将尝试模拟TabClient依赖项,通过调用按钮的操作方法模拟(比如)按下按钮,然后检查模拟对象以确保调用了适当的流(即,断言调用了正确对象的正确方法)。您可能需要对类进行一些重构,以便能够模拟它们的依赖关系。同样,我会为所有相关的UI对象编写测试
老实说,我从未测试过Swing应用程序,不过我发现以下链接可能会对您的问题有所帮助(尽管其中一些可能需要创建UI):