diff --git a/tests/unit/dummy-validator.hpp b/tests/unit/dummy-validator.hpp
index be0adb3..63b7556 100644
--- a/tests/unit/dummy-validator.hpp
+++ b/tests/unit/dummy-validator.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2020 Regents of the University of California.
+ * Copyright (c) 2013-2022 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -29,12 +29,13 @@
 namespace ndn {
 namespace tests {
 
-/** \brief A validation policy for unit testing
+/**
+ * \brief A dummy validation policy for unit testing.
  */
 class DummyValidationPolicy : public security::ValidationPolicy
 {
 public:
-  /** \brief constructor
+  /** \brief Constructor.
    *  \param shouldAccept whether to accept or reject all validation requests
    */
   explicit
@@ -43,7 +44,7 @@
     this->setResult(shouldAccept);
   }
 
-  /** \brief change the validation result
+  /** \brief Change the validation result.
    *  \param shouldAccept whether to accept or reject all validation requests
    */
   void
@@ -52,7 +53,7 @@
     m_decide = [shouldAccept] (const Name&) { return shouldAccept; };
   }
 
-  /** \brief set a callback for validation
+  /** \brief Set a callback for validation.
    *  \param cb a callback which receives the Interest/Data name for each validation request;
    *            its return value determines the validation result
    */
diff --git a/tests/unit/mgmt/nfd/controller-fixture.hpp b/tests/unit/mgmt/nfd/controller-fixture.hpp
index 764ff41..ae4ab3c 100644
--- a/tests/unit/mgmt/nfd/controller-fixture.hpp
+++ b/tests/unit/mgmt/nfd/controller-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2022 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -48,7 +48,7 @@
     m_keyChain.setDefaultIdentity(m_keyChain.createIdentity("/localhost/ControllerFixture"));
   }
 
-  /** \brief controls whether Controller's validator should accept or reject validation requests
+  /** \brief Controls whether Controller's validator should accept or reject validation requests.
    *
    *  Initially, the validator accepts all requests.
    *  Setting \p false causes validator to reject all requests.
diff --git a/tests/unit/mgmt/nfd/status-dataset.t.cpp b/tests/unit/mgmt/nfd/status-dataset.t.cpp
index b9cc84d..633a45d 100644
--- a/tests/unit/mgmt/nfd/status-dataset.t.cpp
+++ b/tests/unit/mgmt/nfd/status-dataset.t.cpp
@@ -37,7 +37,7 @@
 class ControllerStatusDatasetFixture : public ControllerFixture
 {
 protected:
-  /** \brief send one WireEncodable as Data reply
+  /** \brief Send one WireEncodable as Data reply.
    *  \param prefix dataset prefix without version and segment
    *  \param payload payload block
    *  \note payload must fit in one Data
@@ -53,7 +53,7 @@
     face.receive(*signData(data));
   }
 
-  /** \brief send two WireEncodables as Data reply
+  /** \brief Send two WireEncodables as Data reply.
    *  \param prefix dataset prefix without version and segment
    *  \param payload1 first vector item
    *  \param payload2 second vector item
diff --git a/tests/unit/util/io.t.cpp b/tests/unit/util/io.t.cpp
index 270270c..9fcafd7 100644
--- a/tests/unit/util/io.t.cpp
+++ b/tests/unit/util/io.t.cpp
@@ -114,7 +114,7 @@
   }
 
   /**
-   * \brief create a directory at `filepath`, so that it's neither readable nor writable as a file
+   * \brief Create a directory at `filepath`, so that it's neither readable nor writable as a file.
    */
   void
   mkdir() const
diff --git a/tests/unit/util/notification-subscriber.t.cpp b/tests/unit/util/notification-subscriber.t.cpp
index 3936e9e..896f632 100644
--- a/tests/unit/util/notification-subscriber.t.cpp
+++ b/tests/unit/util/notification-subscriber.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021 Regents of the University of California,
+ * Copyright (c) 2014-2022 Regents of the University of California,
  *                         Arizona Board of Regents,
  *                         Colorado State University,
  *                         University Pierre & Marie Curie, Sorbonne University,
@@ -49,7 +49,7 @@
   {
   }
 
-  /** \brief deliver one notification to subscriber
+  /** \brief Deliver one notification to subscriber.
    */
   void
   deliverNotification(const std::string& msg)
@@ -69,7 +69,7 @@
     subscriberFace.receive(data);
   }
 
-  /** \brief deliver a Nack to subscriber
+  /** \brief Deliver a Nack to subscriber.
    */
   void
   deliverNack(const Interest& interest, const lp::NackReason& reason)
