diff --git a/tests/daemon/face/multicast-ethernet-transport.t.cpp b/tests/daemon/face/multicast-ethernet-transport.t.cpp
index 4e0df3c..84dead4 100644
--- a/tests/daemon/face/multicast-ethernet-transport.t.cpp
+++ b/tests/daemon/face/multicast-ethernet-transport.t.cpp
@@ -63,12 +63,12 @@
 
 BOOST_AUTO_TEST_CASE(NetifStateChange)
 {
-  SKIP_IF_ETHERNET_NETIF_COUNT_LT(1);
-  initializeMulticast();
-  BOOST_CHECK_EQUAL(transport->getState(), TransportState::UP);
+  SKIP_IF_NO_RUNNING_ETHERNET_NETIF();
+  auto netif = getRunningNetif();
+  initializeMulticast(netif);
 
-  // simulate 'ip link set IFNAME down'
-  getScheduler().schedule(10_ms, [this] { netif->setState(ndn::net::InterfaceState::DOWN); });
+  // Simulate setting interface administratively down
+  getScheduler().schedule(10_ms, [netif] { netif->setState(ndn::net::InterfaceState::DOWN); });
   transport->afterStateChange.connectSingleShot([this] (auto oldState, auto newState) {
     BOOST_CHECK_EQUAL(oldState, TransportState::UP);
     BOOST_CHECK_EQUAL(newState, TransportState::DOWN);
@@ -77,9 +77,9 @@
   BOOST_CHECK_EQUAL(limitedIo.run(1, 1_s), LimitedIo::EXCEED_OPS);
   BOOST_CHECK_EQUAL(transport->getState(), TransportState::DOWN);
 
-  // simulate 'ip link set IFNAME up'
-  getScheduler().schedule(10_ms, [this] { netif->setState(ndn::net::InterfaceState::NO_CARRIER); });
-  getScheduler().schedule(80_ms, [this] { netif->setState(ndn::net::InterfaceState::RUNNING); });
+  // Simulate setting interface administratively up
+  getScheduler().schedule(10_ms, [netif] { netif->setState(ndn::net::InterfaceState::NO_CARRIER); });
+  getScheduler().schedule(80_ms, [netif] { netif->setState(ndn::net::InterfaceState::RUNNING); });
   transport->afterStateChange.connectSingleShot([this] (auto oldState, auto newState) {
     BOOST_CHECK_EQUAL(oldState, TransportState::DOWN);
     BOOST_CHECK_EQUAL(newState, TransportState::UP);
@@ -93,25 +93,25 @@
 {
   SKIP_IF_ETHERNET_NETIF_COUNT_LT(1);
   initializeMulticast();
-  BOOST_CHECK_EQUAL(transport->getMtu(), netif->getMtu());
+  BOOST_CHECK_EQUAL(transport->getMtu(), defaultNetif->getMtu());
 
   // netif changes MTU from initial value to 1024
-  netif->setMtu(1024);
+  defaultNetif->setMtu(1024);
   BOOST_CHECK_EQUAL(transport->getMtu(), 1024);
 
   // netif changes MTU from 1024 to 4000
-  netif->setMtu(4000);
+  defaultNetif->setMtu(4000);
   BOOST_CHECK_EQUAL(transport->getMtu(), 4000);
 
   // netif changes MTU from 4000 to 0
-  netif->setMtu(0);
+  defaultNetif->setMtu(0);
   BOOST_CHECK_EQUAL(transport->getMtu(), 0);
 }
 
 BOOST_AUTO_TEST_CASE(Close)
 {
-  SKIP_IF_ETHERNET_NETIF_COUNT_LT(1);
-  initializeMulticast();
+  SKIP_IF_NO_RUNNING_ETHERNET_NETIF();
+  initializeMulticast(getRunningNetif());
 
   transport->afterStateChange.connectSingleShot([] (auto oldState, auto newState) {
     BOOST_CHECK_EQUAL(oldState, TransportState::UP);
