Migrate tests to JUnit 5 (#8519)

Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
Wouter Born
2020-09-21 18:21:26 +02:00
committed by GitHub
parent 6df6783b60
commit bd82ca82df
478 changed files with 3996 additions and 4419 deletions

View File

@@ -12,7 +12,7 @@
*/
package org.openhab.binding.dsmr.internal;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.io.InputStream;
@@ -63,9 +63,9 @@ public final class TelegramReaderUtil {
parser.setLenientMode(true);
parser.parse(telegram, telegram.length);
assertNotNull("Telegram state should have been set. (Missing newline at end of message?)", p1Telegram.get());
assertEquals("Expected TelegramState should be as expected", expectedTelegramState,
p1Telegram.get().getTelegramState());
assertNotNull(p1Telegram.get(), "Telegram state should have been set. (Missing newline at end of message?)");
assertEquals(expectedTelegramState, p1Telegram.get().getTelegramState(),
"Expected TelegramState should be as expected");
return p1Telegram.get();
}
}

View File

@@ -12,10 +12,9 @@
*/
package org.openhab.binding.dsmr.internal.device;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.mockito.MockitoAnnotations.initMocks;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -25,9 +24,11 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.openhab.binding.dsmr.internal.DSMRBindingConstants;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.DSMRSerialAutoDevice.DeviceState;
@@ -45,22 +46,20 @@ import org.openhab.core.io.transport.serial.SerialPortManager;
*
* @author Hilbrand Bouwkamp - Initial contribution
*/
@ExtendWith(MockitoExtension.class)
public class DSMRSerialAutoDeviceTest {
private static final String DUMMY_PORTNAME = "/dev/dummy-serial";
private static final String TELEGRAM_NAME = "dsmr_50";
@Mock
private SerialPortIdentifier mockIdentifier;
@Mock
private ScheduledExecutorService scheduler;
@Mock
private SerialPort mockSerialPort;
private @Mock SerialPortIdentifier mockIdentifier;
private @Mock ScheduledExecutorService scheduler;
private @Mock SerialPort mockSerialPort;
private SerialPortManager serialPortManager = new SerialPortManager() {
@Override
public SerialPortIdentifier getIdentifier(String name) {
assertEquals("Expect the passed serial port name", DUMMY_PORTNAME, name);
assertEquals(DUMMY_PORTNAME, name, "Expect the passed serial port name");
return mockIdentifier;
}
@@ -71,9 +70,8 @@ public class DSMRSerialAutoDeviceTest {
};
private SerialPortEventListener serialPortEventListener;
@Before
@BeforeEach
public void setUp() throws PortInUseException, TooManyListenersException {
initMocks(this);
doAnswer(a -> {
serialPortEventListener = a.getArgument(0);
return null;
@@ -100,18 +98,18 @@ public class DSMRSerialAutoDeviceTest {
DSMRSerialAutoDevice device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener,
new DSMRTelegramListener(), scheduler, 1);
device.start();
assertSame("Expect to be starting discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be starting discovery state");
serialPortEventListener
.serialEvent(new MockSerialPortEvent(mockSerialPort, SerialPortEvent.BI, false, true));
assertSame("Expect to be still in discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be still in discovery state");
serialPortEventListener
.serialEvent(new MockSerialPortEvent(mockSerialPort, SerialPortEvent.DATA_AVAILABLE, false, true));
assertSame("Expect to be in normal state", DeviceState.NORMAL, device.getState());
assertSame(DeviceState.NORMAL, device.getState(), "Expect to be in normal state");
device.restart();
assertSame("Expect not to start rediscovery when in normal state", DeviceState.NORMAL, device.getState());
assertSame(DeviceState.NORMAL, device.getState(), "Expect not to start rediscovery when in normal state");
device.stop();
}
assertNotNull("Expected to have read a telegram", telegramRef.get());
assertNotNull(telegramRef.get(), "Expected to have read a telegram");
}
@Test
@@ -137,19 +135,19 @@ public class DSMRSerialAutoDeviceTest {
DSMRSerialAutoDevice device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener,
new DSMRTelegramListener(), scheduler, 1);
device.start();
assertSame("Expected an error", DSMRConnectorErrorEvent.IN_USE, eventRef.get());
assertSame("Expect to be in error state", DeviceState.ERROR, device.getState());
assertSame(DSMRConnectorErrorEvent.IN_USE, eventRef.get(), "Expected an error");
assertSame(DeviceState.ERROR, device.getState(), "Expect to be in error state");
// Trigger device to restart
mockValidSerialPort();
device.restart();
assertSame("Expect to be starting discovery state", DeviceState.DISCOVER_SETTINGS, device.getState());
assertSame(DeviceState.DISCOVER_SETTINGS, device.getState(), "Expect to be starting discovery state");
// Trigger device to go into error stage with port doesn't exist.
mockIdentifier = null;
device = new DSMRSerialAutoDevice(serialPortManager, DUMMY_PORTNAME, listener, new DSMRTelegramListener(),
scheduler, 1);
device.start();
assertSame("Expected an error", DSMRConnectorErrorEvent.DONT_EXISTS, eventRef.get());
assertSame("Expect to be in error state", DeviceState.ERROR, device.getState());
assertSame(DSMRConnectorErrorEvent.DONT_EXISTS, eventRef.get(), "Expected an error");
assertSame(DeviceState.ERROR, device.getState(), "Expect to be in error state");
}
}

View File

@@ -13,13 +13,13 @@
package org.openhab.binding.dsmr.internal.device;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
import static org.hamcrest.MatcherAssert.assertThat;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1TelegramListener;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1TelegramParser;

View File

@@ -12,16 +12,13 @@
*/
package org.openhab.binding.dsmr.internal.device.p1telegram;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
@@ -30,11 +27,9 @@ import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramSt
*
* @author Hilbrand Bouwkamp - Initial contribution
*/
@RunWith(value = Parameterized.class)
public class P1TelegramParserTest {
// @formatter:off
@Parameters(name = "{0}")
public static final List<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "ace4000", 59, },
@@ -52,17 +47,13 @@ public class P1TelegramParserTest {
}
// @formatter:on
@Parameter(0)
public String telegramName;
@Parameter(1)
public int numberOfCosemObjects;
@Test
public void testParsing() {
@ParameterizedTest
@MethodSource("data")
public void testParsing(final String telegramName, final int numberOfCosemObjects) {
P1Telegram telegram = TelegramReaderUtil.readTelegram(telegramName, TelegramState.OK);
assertEquals("Should not have any unknown cosem objects", 0, telegram.getUnknownCosemObjects().size());
assertEquals("Expected number of objects", numberOfCosemObjects,
telegram.getCosemObjects().stream().mapToInt(co -> co.getCosemValues().size()).sum());
assertEquals(0, telegram.getUnknownCosemObjects().size(), "Should not have any unknown cosem objects");
assertEquals(numberOfCosemObjects,
telegram.getCosemObjects().stream().mapToInt(co -> co.getCosemValues().size()).sum(),
"Expected number of objects");
}
}

View File

@@ -12,7 +12,7 @@
*/
package org.openhab.binding.dsmr.internal.discovery;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.openhab.binding.dsmr.internal.meter.DSMRMeterType.*;
import java.util.Arrays;
@@ -24,11 +24,8 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.cosem.CosemObject;
import org.openhab.binding.dsmr.internal.device.cosem.CosemObjectType;
@@ -42,11 +39,9 @@ import org.openhab.binding.dsmr.internal.meter.DSMRMeterType;
*
* @author Hilbrand Bouwkamp - Initial contribution
*/
@RunWith(value = Parameterized.class)
public class DSMRMeterDetectorTest {
// @formatter:off
@Parameters(name = "{0}")
public static final List<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "ace4000", EnumSet.of( ELECTRICITY_ACE4000, GAS_ACE4000)},
@@ -64,30 +59,26 @@ public class DSMRMeterDetectorTest {
}
// @formatter:on
@Parameter(0)
public String telegramName;
@Parameter(1)
public Set<DSMRMeterType> expectedMeters;
@Test
public void testDetectMeters() {
@ParameterizedTest
@MethodSource("data")
public void testDetectMeters(final String telegramName, final Set<DSMRMeterType> expectedMeters) {
P1Telegram telegram = TelegramReaderUtil.readTelegram(telegramName, TelegramState.OK);
DSMRMeterDetector detector = new DSMRMeterDetector();
Entry<Collection<DSMRMeterDescriptor>, Map<CosemObjectType, CosemObject>> entry = detector
.detectMeters(telegram);
Collection<DSMRMeterDescriptor> detectMeters = entry.getKey();
assertEquals("Should detect correct number of meters: " + Arrays.toString(detectMeters.toArray()),
expectedMeters.size(), detectMeters.size());
assertEquals("Should not have any undetected cosem objects: ", Collections.emptyMap(), entry.getValue());
assertEquals("Should not have any unknown cosem objects", Collections.emptyList(),
telegram.getUnknownCosemObjects());
assertEquals(expectedMeters.size(), detectMeters.size(),
"Should detect correct number of meters: " + Arrays.toString(detectMeters.toArray()));
assertEquals(Collections.emptyMap(), entry.getValue(), "Should not have any undetected cosem objects: ");
assertEquals(Collections.emptyList(), telegram.getUnknownCosemObjects(),
"Should not have any unknown cosem objects");
for (DSMRMeterType meter : expectedMeters) {
assertEquals(
1, detectMeters.stream().filter(e -> e.getMeterType() == meter).count(),
String.format("Meter '%s' not found: %s", meter,
Arrays.toString(detectMeters.toArray(new DSMRMeterDescriptor[0]))),
1, detectMeters.stream().filter(e -> e.getMeterType() == meter).count());
Arrays.toString(detectMeters.toArray(new DSMRMeterDescriptor[0]))));
}
}
}

View File

@@ -12,24 +12,23 @@
*/
package org.openhab.binding.dsmr.internal.discovery;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.openhab.binding.dsmr.internal.meter.DSMRMeterType.*;
import java.util.Collections;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
import java.util.TooManyListenersException;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
@@ -37,7 +36,6 @@ import org.openhab.binding.dsmr.internal.handler.DSMRBridgeHandler;
import org.openhab.binding.dsmr.internal.handler.DSMRMeterHandler;
import org.openhab.binding.dsmr.internal.meter.DSMRMeterDescriptor;
import org.openhab.binding.dsmr.internal.meter.DSMRMeterType;
import org.openhab.core.io.transport.serial.PortInUseException;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingUID;
@@ -46,22 +44,15 @@ import org.openhab.core.thing.ThingUID;
*
* @author Hilbrand Bouwkamp - Initial contribution
*/
@ExtendWith(MockitoExtension.class)
public class DSMRMeterDiscoveryServiceTest {
private static final String EXPECTED_CONFIGURED_TELEGRAM = "dsmr_50";
private static final String UNREGISTERED_METER_TELEGRAM = "unregistered_meter";
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private DSMRBridgeHandler bridge;
@Mock
private Thing thing;
@Mock
private DSMRMeterHandler meterHandler;
@Before
public void setUp() throws PortInUseException, TooManyListenersException {
initMocks(this);
}
private @Mock(answer = Answers.RETURNS_DEEP_STUBS) DSMRBridgeHandler bridge;
private @Mock Thing thing;
private @Mock DSMRMeterHandler meterHandler;
/**
* Test if discovery reports when the user has incorrectly configured the binding with the wrong meter types.
@@ -100,12 +91,12 @@ public class DSMRMeterDiscoveryServiceTest {
when(bridge.getThing().getThings()).thenReturn(things);
service.telegramReceived(expected);
assertNotNull("Should have invalid configured meters", invalidConfiguredRef.get());
assertTrue("Should have found specific invalid meter",
invalidConfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V4_2));
assertNotNull("Should have undetected meters", unconfiguredRef.get());
assertTrue("Should have found specific undetected meter",
unconfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V5_0));
assertNotNull(invalidConfiguredRef.get(), "Should have invalid configured meters");
assertTrue(invalidConfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V4_2),
"Should have found specific invalid meter");
assertNotNull(unconfiguredRef.get(), "Should have undetected meters");
assertTrue(unconfiguredRef.get().contains(DSMRMeterType.ELECTRICITY_V5_0),
"Should have found specific undetected meter");
}
/**
@@ -128,6 +119,6 @@ public class DSMRMeterDiscoveryServiceTest {
when(bridge.getThing().getThings()).thenReturn(Collections.emptyList());
service.telegramReceived(telegram);
assertTrue("Should have found an unregistered meter", unregisteredMeter.get());
assertTrue(unregisteredMeter.get(), "Should have found an unregistered meter");
}
}

View File

@@ -12,12 +12,12 @@
*/
package org.openhab.binding.dsmr.internal.meter;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.openhab.binding.dsmr.internal.TelegramReaderUtil;
import org.openhab.binding.dsmr.internal.device.cosem.CosemObject;
import org.openhab.binding.dsmr.internal.device.p1telegram.P1Telegram.TelegramState;
@@ -40,7 +40,7 @@ public class DSMRMeterTest {
List<CosemObject> filterMeterValues = meter
.filterMeterValues(TelegramReaderUtil.readTelegram("dsmr_50", TelegramState.OK).getCosemObjects());
assertEquals("Filter should return all required objects", DSMRMeterType.DEVICE_V5.requiredCosemObjects.length,
filterMeterValues.size());
assertEquals(DSMRMeterType.DEVICE_V5.requiredCosemObjects.length, filterMeterValues.size(),
"Filter should return all required objects");
}
}