[英]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.