Java 不创建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

在我的个人项目中,我想进行单元测试,但我在这方面遇到了麻烦

我的项目没有一个大的逻辑层。最重要的逻辑是UI和实体之间的交互。一些例外情况是计算某天的付款和其他事情。这些事情很少改变,我想从经常改变的事情开始

例如,请看这个类:

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):