diff --git a/test/Makefile.am b/test/Makefile.am
index e28604d..cd2665a 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,9 +1,21 @@
 # Common flags for all binaries in this subdirectory.
 # Per-program specific flags can be specified using
 # prg_CPPFLAGS = ....
-AM_CPPFLAGS = -I${top_srcdir} $(GTEST_CFLAGS)
-AM_CXXFLAGS = $(PTHREAD_CFLAGS) $(GTEST_CFLAGS)
-AM_LDFLAGS = $(GTEST_LIBS) $(PTHREAD_LIBS) $(OESDK_TESTCASE_FLAGS)
+AM_CPPFLAGS = -I${top_srcdir} \
+              $(GTEST_CFLAGS) \
+              $(GMOCK_CFLAGS) \
+              $(SDBUSPLUS_CFLAGS) \
+              $(PHOSPHOR_DBUS_INTERFACES_CFLAGS)
+
+AM_CXXFLAGS = $(PTHREAD_CFLAGS) \
+              $(GTEST_CFLAGS)
+
+AM_LDFLAGS = $(GTEST_LIBS) \
+             $(PTHREAD_LIBS) \
+             $(GMOCK_LIBS) \
+             $(OESDK_TESTCASE_FLAGS) \
+             $(SDBUSPLUS_LIBS) \
+             $(PHOSPHOR_DBUS_INTERFACES_LIBS)
 
 # The list of unit test programs we are building and running.
 check_PROGRAMS = post_reporter_test
diff --git a/test/post_reporter_test.cpp b/test/post_reporter_test.cpp
index 738982d..d1a158e 100644
--- a/test/post_reporter_test.cpp
+++ b/test/post_reporter_test.cpp
@@ -1,10 +1,82 @@
+#include <gmock/gmock.h>
 #include <gtest/gtest.h>
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/test/sdbus_mock.hpp>
 
+#include "lpcsnoop/snoop.hpp"
+
+using ::testing::IsNull;
+using ::testing::NiceMock;
+using ::testing::Return;
+using ::testing::StrEq;
+using ::testing::_;
+
+namespace
+{
+
+// Fixture for testing class PostReporter
 class PostReporterTest : public ::testing::Test
 {
+  protected:
+    PostReporterTest() : bus_mock(), bus(sdbusplus::get_mocked_new(&bus_mock))
+    {
+    }
+
+    ~PostReporterTest()
+    {
+    }
+
+    NiceMock<sdbusplus::SdBusMock> bus_mock;
+    sdbusplus::bus::bus bus;
 };
 
-TEST(PostReporterTest, DummyTest)
+TEST_F(PostReporterTest, EmitsObjectsOnExpectedDbusPath)
 {
-    EXPECT_EQ(1, 1);
+
+    EXPECT_CALL(bus_mock,
+                sd_bus_emit_object_added(IsNull(), StrEq(SNOOP_OBJECTPATH)))
+        .WillOnce(Return(0));
+
+    PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
+    testReporter.emit_object_added();
 }
+
+TEST_F(PostReporterTest, AddsObjectWithExpectedName)
+{
+    EXPECT_CALL(bus_mock,
+                sd_bus_add_object_vtable(IsNull(), _, StrEq(SNOOP_OBJECTPATH),
+                                         StrEq(SNOOP_BUSNAME), _, _))
+        .WillOnce(Return(0));
+
+    PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
+}
+
+TEST_F(PostReporterTest, ValueReadsDefaultToZero)
+{
+    PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
+    EXPECT_EQ(0, testReporter.value());
+}
+
+TEST_F(PostReporterTest, SetValueToPositiveValueWorks)
+{
+    PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
+    testReporter.value(65537);
+    EXPECT_EQ(65537, testReporter.value());
+}
+
+TEST_F(PostReporterTest, SetValueMultipleTimesWorks)
+{
+    PostReporter testReporter(bus, SNOOP_OBJECTPATH, true);
+    testReporter.value(123);
+    EXPECT_EQ(123, testReporter.value());
+    testReporter.value(456);
+    EXPECT_EQ(456, testReporter.value());
+    testReporter.value(0);
+    EXPECT_EQ(0, testReporter.value());
+    testReporter.value(456);
+    EXPECT_EQ(456, testReporter.value());
+    testReporter.value(456);
+    EXPECT_EQ(456, testReporter.value());
+}
+
+} // namespace
