diff --git a/tests/daemon/face/dummy-face.hpp b/tests/daemon/face/dummy-face.hpp
index 15ab445..bdca129 100644
--- a/tests/daemon/face/dummy-face.hpp
+++ b/tests/daemon/face/dummy-face.hpp
@@ -51,23 +51,23 @@
             ndn::nfd::FacePersistency persistency = ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
             ndn::nfd::LinkType linkType = ndn::nfd::LINK_TYPE_POINT_TO_POINT);
 
-  /** \brief changes face state
+  /** \brief Changes face state.
    *  \throw std::runtime_error state transition is invalid
    */
   void
   setState(face::FaceState state);
 
-  /** \brief causes the face to receive an Interest
+  /** \brief Causes the face to receive an Interest.
    */
   void
   receiveInterest(const Interest& interest, const EndpointId& endpointId = {});
 
-  /** \brief causes the face to receive a Data
+  /** \brief Causes the face to receive a Data.
    */
   void
   receiveData(const Data& data, const EndpointId& endpointId = {});
 
-  /** \brief causes the face to receive a Nack
+  /** \brief Causes the face to receive a Nack.
    */
   void
   receiveNack(const lp::Nack& nack, const EndpointId& endpointId = {});
diff --git a/tests/daemon/face/ethernet-fixture.hpp b/tests/daemon/face/ethernet-fixture.hpp
index 915b2c0..dfd5615 100644
--- a/tests/daemon/face/ethernet-fixture.hpp
+++ b/tests/daemon/face/ethernet-fixture.hpp
@@ -63,7 +63,7 @@
     }
   }
 
-  /** \brief returns the first running interface
+  /** \brief Returns the first running interface.
    */
   shared_ptr<ndn::net::NetworkInterface>
   getRunningNetif() const
@@ -77,7 +77,7 @@
     return nullptr;
   }
 
-  /** \brief create a UnicastEthernetTransport
+  /** \brief Create a UnicastEthernetTransport.
    */
   void
   initializeUnicast(shared_ptr<ndn::net::NetworkInterface> netif = nullptr,
@@ -93,7 +93,7 @@
     transport = make_unique<UnicastEthernetTransport>(*netif, remoteEp, persistency, 2_s);
   }
 
-  /** \brief create a MulticastEthernetTransport
+  /** \brief Create a MulticastEthernetTransport.
    */
   void
   initializeMulticast(shared_ptr<ndn::net::NetworkInterface> netif = nullptr,
@@ -112,7 +112,7 @@
 protected:
   LimitedIo limitedIo;
 
-  /** \brief EthernetTransport-capable network interfaces
+  /** \brief EthernetTransport-capable network interfaces.
    */
   std::vector<shared_ptr<const ndn::net::NetworkInterface>> netifs;
 
diff --git a/tests/daemon/face/face-system-fixture.hpp b/tests/daemon/face/face-system-fixture.hpp
index 1891a97..1b94646 100644
--- a/tests/daemon/face/face-system-fixture.hpp
+++ b/tests/daemon/face/face-system-fixture.hpp
@@ -50,7 +50,7 @@
     faceSystem.setConfigFile(configFile);
   }
 
-  /** \brief Copy a snapshot of NetworkInterface information to \p netmon
+  /** \brief Copy a snapshot of NetworkInterface information to \p netmon.
    *  \pre netmon contains no NetworkInterface
    */
   void
@@ -81,7 +81,7 @@
     configFile.parse(text, isDryRun, "test-config");
   }
 
-  /** \brief get ProtocolFactory from FaceSystem
+  /** \brief Get ProtocolFactory from FaceSystem.
    *  \tparam F ProtocolFactory subclass
    *
    *  If ProtocolFactory with \p scheme does not exist or has an incompatible type,
@@ -96,7 +96,7 @@
     return *factory;
   }
 
-  /** \brief get ProtocolFactory from FaceSystem
+  /** \brief Get ProtocolFactory from FaceSystem.
    *  \tparam F ProtocolFactory subclass
    *
    *  If ProtocolFactory with \p scheme does not exist or has an incompatible type,
@@ -111,7 +111,7 @@
     return *factory;
   }
 
-  /** \brief list faces of specified scheme from FaceTable
+  /** \brief List faces of specified scheme from FaceTable.
    *  \param scheme local or remote FaceUri scheme
    *  \param linkType if not NONE, filter by specified LinkType
    */
@@ -140,7 +140,7 @@
 };
 
 /**
- * \brief FaceSystemFixture with a ProtocolFactory reference
+ * \brief FaceSystemFixture with a ProtocolFactory reference.
  */
 template<typename FactoryType>
 class FaceSystemFactoryFixture : public FaceSystemFixture
diff --git a/tests/daemon/face/lp-reliability.t.cpp b/tests/daemon/face/lp-reliability.t.cpp
index 81c28e0..76a92db 100644
--- a/tests/daemon/face/lp-reliability.t.cpp
+++ b/tests/daemon/face/lp-reliability.t.cpp
@@ -116,7 +116,7 @@
                        [txSeq] (auto fragIt) { return fragIt->first == txSeq; });
   }
 
-  /** \brief make an LpPacket with fragment of specified size
+  /** \brief Make an LpPacket with fragment of specified size.
    *  \param pktNum packet identifier, which can be extracted with \p getPktNum
    *  \param payloadSize total payload size; must be >= 4 and <= 255
    */
@@ -131,7 +131,7 @@
     return pkt;
   }
 
-  /** \brief extract packet identifier from LpPacket made with \p makeFrag
+  /** \brief Extract packet identifier from LpPacket made with \p makeFrag.
    *  \retval 0 packet identifier cannot be extracted
    */
   static uint32_t
diff --git a/tests/daemon/face/transport.t.cpp b/tests/daemon/face/transport.t.cpp
index 9545b83..e3e427c 100644
--- a/tests/daemon/face/transport.t.cpp
+++ b/tests/daemon/face/transport.t.cpp
@@ -68,13 +68,13 @@
   BOOST_CHECK_EQUAL(transport->persistencyHistory.back(), ndn::nfd::FACE_PERSISTENCY_PERSISTENT);
 }
 
-/** \brief a macro to declare a TransportState as a integral constant
+/** \brief A macro to declare a TransportState as a integral constant.
  *  \note we cannot use mpl::integral_c because TransportState is not an integral type
  */
 #define TRANSPORT_STATE_C(X) mpl::int_<static_cast<int>(TransportState::X)>
 
-/** \brief a map from every TransportState to a valid state transition sequence
- *         for entering this state from UP
+/** \brief A map from every TransportState to a valid state transition sequence
+ *         for entering this state from UP.
  */
 typedef mpl::map<
   mpl::pair<TRANSPORT_STATE_C(UP),
@@ -98,14 +98,14 @@
     >>
 > StateEntering;
 
-/** \brief a sequence of all valid TransportStates
+/** \brief A sequence of all valid TransportStates.
  */
 typedef mpl::fold<StateEntering,
   mpl::vector<>,
   mpl::push_back<mpl::_1, mpl::first<mpl::_2>>
 >::type States;
 
-/** \brief a set of all valid state transitions
+/** \brief A set of all valid state transitions.
  */
 typedef mpl::set<
   mpl::pair<TRANSPORT_STATE_C(UP), TRANSPORT_STATE_C(DOWN)>,
@@ -118,8 +118,8 @@
   mpl::pair<TRANSPORT_STATE_C(FAILED), TRANSPORT_STATE_C(CLOSED)>
 > ValidStateTransitions;
 
-/** \brief a metafunction to generate a sequence of all state transitions
- *         from a specified state
+/** \brief A metafunction to generate a sequence of all state transitions
+ *         from a specified state.
  */
 template<typename FromState, typename Result>
 struct StateTransitionsFrom : mpl::fold<
@@ -129,7 +129,7 @@
 {
 };
 
-/** \brief a sequence of all state transitions
+/** \brief A sequence of all state transitions.
  */
 typedef mpl::fold<
   States,
diff --git a/tests/daemon/face/udp-factory.t.cpp b/tests/daemon/face/udp-factory.t.cpp
index 41a5dfd..259dbb3 100644
--- a/tests/daemon/face/udp-factory.t.cpp
+++ b/tests/daemon/face/udp-factory.t.cpp
@@ -88,7 +88,7 @@
     }
   }
 
-  /** \brief returns a non-loopback IP address suitable for the creation of a UDP multicast face
+  /** \brief Returns a non-loopback IP address suitable for the creation of a UDP multicast face.
    */
   boost::asio::ip::address
   findNonLoopbackAddressForMulticastFace(ndn::net::AddressFamily af) const
@@ -115,7 +115,7 @@
     return this->listFacesByScheme("udp6", linkType);
   }
 
-  /** \brief determine whether \p netif has at least one IP address of the given family
+  /** \brief Determine whether \p netif has at least one IP address of the given family.
    */
   static bool
   hasAddressFamily(const NetworkInterface& netif, ndn::net::AddressFamily af)
@@ -124,7 +124,7 @@
                        [af] (const auto& a) { return a.getFamily() == af; });
   }
 
-  /** \brief determine whether a UDP multicast face is created on \p netif
+  /** \brief Determine whether a UDP multicast face is created on \p netif.
    */
   static bool
   isFaceOnNetif(const Face& face, const NetworkInterface& netif)
@@ -135,17 +135,17 @@
   }
 
 protected:
-  /** \brief MulticastUdpTransport-capable network interfaces (IPv4 + IPv6)
+  /** \brief MulticastUdpTransport-capable network interfaces (IPv4 + IPv6).
    *
    *  This should be used in test cases that do not depend on a specific address family
    */
   std::vector<shared_ptr<const NetworkInterface>> netifs;
 
-  /** \brief MulticastUdpTransport-capable network interfaces (IPv4 only)
+  /** \brief MulticastUdpTransport-capable network interfaces (IPv4 only).
    */
   std::vector<shared_ptr<const NetworkInterface>> netifsV4;
 
-  /** \brief MulticastUdpTransport-capable network interfaces (IPv6 only)
+  /** \brief MulticastUdpTransport-capable network interfaces (IPv6 only).
    */
   std::vector<shared_ptr<const NetworkInterface>> netifsV6;
 };
diff --git a/tests/daemon/face/websocket-transport-fixture.hpp b/tests/daemon/face/websocket-transport-fixture.hpp
index eed4923..c6f25da 100644
--- a/tests/daemon/face/websocket-transport-fixture.hpp
+++ b/tests/daemon/face/websocket-transport-fixture.hpp
@@ -39,12 +39,12 @@
 namespace ip = boost::asio::ip;
 using face::WebSocketTransport;
 
-/** \brief a fixture that accepts a single WebSocket connection from a client
+/** \brief A fixture that accepts a single WebSocket connection from a client.
  */
 class WebSocketTransportFixture : public GlobalIoFixture
 {
 protected:
-  /** \brief initialize server and start listening
+  /** \brief Initialize server and start listening.
    */
   void
   serverListen(const ip::tcp::endpoint& ep,
@@ -67,7 +67,7 @@
     server.start_accept();
   }
 
-  /** \brief initialize client and connect to server
+  /** \brief Initialize client and connect to server.
    */
   void
   clientConnect(const std::string& uri)
@@ -88,7 +88,7 @@
   }
 
   /**
-   * \brief Initialize both server and client, and have each other connected, create Transport
+   * \brief Initialize both server and client, and have each other connected, create Transport.
    */
   void
   initialize(const shared_ptr<const ndn::net::NetworkInterface>&,
