繁体   English   中英

为 DTO 构造函数创建 JUnit 测试

[英]Create JUnit Test for a DTO Constructor

public InventoryTable(String terminalId, String machineType, String machineName) {
        super();
        this.terminalId = terminalId;
        this.machineType = machineType;
        this.machineName = machineName;
    }    

public InventoryTable(InventoryTableDTO inventoryDTO) {
            this.terminalId = inventoryDTO.getTerminalId();
            this.machineType = inventoryDTO.getMachineType();
            this.machineName = inventoryDTO.getMachineName();

        }

这是我的构造函数,我需要为第二个构造函数创建一个 JUnit 测试

下面是我对第一个构造函数的 JUnit 测试

@Before
    public void setUp() {
        inventoryTable = new InventoryTable("12345", "TypeMoTo", "Machina");
        inventoryTable.setTerminalId("12345");
        inventoryTable.setMachineType("TypeMoTo");
        inventoryTable.setMachineName("Machina");
    }

@Test
    public void testThis() {
        assertThat(inventoryTable.getTerminalId()).isEqualTo("12345");
        assertThat(inventoryTable.getMachineType()).isEqualTo("TypeMoTo");
        assertThat(inventoryTable.getMachineName()).isEqualTo("Machina");

    }

谢谢 :)

@Before
public void setUp() {
    inventoryTable = new InventoryTable("12345", "TypeMoTo", "Machina");
}
@Test
public void testCopyConstructor() {
    InventoryTable it = new InventoryTable(inventoryTable);
    assertThat(inventoryTable.getTerminalId()).isEqualTo("12345");
    assertThat(inventoryTable.getMachineType()).isEqualTo("TypeMoTo");
    assertThat(inventoryTable.getMachineName()).isEqualTo("Machina");

}

第二个构造函数是 Copy Constructor在设置中,您已经有一个实例,因此您可以将其传递给 Copy Constructor 并断言值。

与您为第一个所做的相同,在这里您可以使用旧对象为第二个构造函数创建新的InventoryTable

@Test
public void testThis2() {
   InventoryTable inventoryNew = new InventoryTable();
   assertThat(inventoryNew.getTerminalId()).isEqualTo(inventoryTable.getTerminalId());
   assertThat(inventoryNew.getMachineType()).isEqualTo(inventoryTable.getMachineType());
   assertThat(inventoryNew.getMachineName()).isEqualTo(inventoryTable.getMachineName());  
}

一般来说,你可以这样做:

@Test
public void testSecondConstructor() {
   // setup:
   InventoryTableDTO dto =Mockito.mock(InventoryTableDTO.class);
   Mockito.when(dto.getTerminalId()).thenReturn("12345");
   Mockito.when(dto.getMachineType()).thenReturn("TypeMoTo");
   Mockito.when(dto.getMachineName()).thenReturn("Machina");


   // when:
   InventoryTable underTest = new InventoryTable(dto);

   // then:
   assertThat(inventoryTable.getTerminalId()).isEqualTo("12345");
   assertThat(inventoryTable.getMachineType()).isEqualTo("TypeMoTo");
   assertThat(inventoryTable.getMachineName()).isEqualTo("Machina");

}

除了使用 mockito 创建模拟,您还可以使用其构造函数创建InventoryTableDTO

首先,我认为您应该摆脱@Before因为测试对象的初始化方式因案例而异,并在测试中初始化案例。 但首先在您的第二个构造函数中进行一个小的更改,以使用第一个:

public InventoryTable(InventoryTableDTO inventoryDTO) {
    this(inventoryDTO.getTerminalId(),
        inventoryDTO.getMachineType(),
        inventoryDTO.getMachineName());
}

测试:

@Test
public void test1st() {
    InventoryTable inventoryTable =
            new InventoryTable("12345", "TypeMoTo", "Machina");        
    assertThat(inventoryTable.getTerminalId()).isEqualTo("12345");
    assertThat(inventoryTable.getMachineType()).isEqualTo("TypeMoTo");
    assertThat(inventoryTable.getMachineName()).isEqualTo("Machina");

}

@Test
public void test2nd() {
    InventoryTable inventoryTable = new InventoryTable(
                new InventorytableDto("12345", "TypeMoTo", "Machina"));
    assertThat(inventoryTable.getTerminalId()).isEqualTo("12345");
    assertThat(inventoryTable.getMachineType()).isEqualTo("TypeMoTo");
    assertThat(inventoryTable.getMachineName()).isEqualTo("Machina");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM