diff --git a/libbpf_android/include/bpf/BpfUtils.h b/libbpf_android/include/bpf/BpfUtils.h
index 8fd2a4a..f0d73e0 100644
--- a/libbpf_android/include/bpf/BpfUtils.h
+++ b/libbpf_android/include/bpf/BpfUtils.h
@@ -45,38 +45,28 @@
     return kernelVersion() >= KVER(major, minor, sub);
 }
 
-#define SKIP_IF_BPF_SUPPORTED                                                    \
-    do {                                                                         \
-        if (android::bpf::isAtLeastKernelVersion(4, 9, 0)) {                     \
-            GTEST_LOG_(INFO) << "This test is skipped since bpf is supported\n"; \
-            return;                                                              \
-        }                                                                        \
+#define SKIP_IF_BPF_SUPPORTED                              \
+    do {                                                   \
+        if (android::bpf::isAtLeastKernelVersion(4, 9, 0)) \
+            GTEST_SKIP() << "Skip: bpf is supported.";     \
     } while (0)
 
-#define SKIP_IF_BPF_NOT_SUPPORTED                                                    \
-    do {                                                                             \
-        if (!android::bpf::isAtLeastKernelVersion(4, 9, 0)) {                        \
-            GTEST_LOG_(INFO) << "This test is skipped since bpf is not supported\n"; \
-            return;                                                                  \
-        }                                                                            \
+#define SKIP_IF_BPF_NOT_SUPPORTED                           \
+    do {                                                    \
+        if (!android::bpf::isAtLeastKernelVersion(4, 9, 0)) \
+            GTEST_SKIP() << "Skip: bpf is not supported.";  \
     } while (0)
 
-#define SKIP_IF_EXTENDED_BPF_NOT_SUPPORTED                                        \
-    do {                                                                          \
-        if (!android::bpf::isAtLeastKernelVersion(4, 14, 0)) {                    \
-            GTEST_LOG_(INFO) << "This test is skipped since extended bpf feature" \
-                             << "not supported\n";                                \
-            return;                                                               \
-        }                                                                         \
+#define SKIP_IF_EXTENDED_BPF_NOT_SUPPORTED                               \
+    do {                                                                 \
+        if (!android::bpf::isAtLeastKernelVersion(4, 14, 0))             \
+            GTEST_SKIP() << "Skip: extended bpf feature not supported."; \
     } while (0)
 
-#define SKIP_IF_XDP_NOT_SUPPORTED                                \
-    do {                                                         \
-        if (!android::bpf::isAtLeastKernelVersion(5, 9, 0)) {    \
-            GTEST_LOG_(INFO) << "This test is skipped since xdp" \
-                             << "not supported\n";               \
-            return;                                              \
-        }                                                        \
+#define SKIP_IF_XDP_NOT_SUPPORTED                           \
+    do {                                                    \
+        if (!android::bpf::isAtLeastKernelVersion(5, 9, 0)) \
+            GTEST_SKIP() << "Skip: xdp not supported.";     \
     } while (0)
 
 }  // namespace bpf
