diff --git a/sys/include/embUnit/AssertImpl.h b/sys/include/embUnit/AssertImpl.h
index cf7e4951cf1256a81c8e9bff4c28fcca51989adb..6d948b1b41bdd6b0f5fb0a74dcba6c984e51b9ff 100644
--- a/sys/include/embUnit/AssertImpl.h
+++ b/sys/include/embUnit/AssertImpl.h
@@ -46,8 +46,8 @@ void assertImplementationCStr(const char *expected,const char *actual, long line
 
 #define TEST_ASSERT_EQUAL_STRING(expected_, actual_) \
     do { \
-        __typeof__(expected_) ____expected__ = expected_; \
-        __typeof__(actual_) ____actual__ = actual_; \
+        const char *____expected__ = expected_; \
+        const char *____actual__ = actual_; \
         if (stdimpl_strcmp(____expected__, ____actual__) != 0) { \
             assertImplementationCStr(____expected__, ____actual__, __LINE__, RIOT_FILE_RELATIVE); \
             return; \
diff --git a/tests/embunit/Makefile b/tests/embunit/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..cd1c9e7b8b6e684eaae136f27c017c2e83076bc1
--- /dev/null
+++ b/tests/embunit/Makefile
@@ -0,0 +1,9 @@
+include ../Makefile.tests_common
+
+USEMODULE += embunit
+
+INCLUDES += -I$(RIOTBASE)/tests/unittests/common
+
+TEST_ON_CI_WHITELIST += all
+
+include $(RIOTBASE)/Makefile.include
diff --git a/tests/embunit/main.c b/tests/embunit/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..6d8caaf5d7f68e17efc954eabc6ed31b84eb0759
--- /dev/null
+++ b/tests/embunit/main.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 HAW Hamburg
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ */
+
+ /**
+  * @ingroup    tests
+  * @{
+  *
+  * @file
+  * @brief      Unit tests for embUnit
+  *
+  * @author     Sebastian Meiling <s@mlng.net>
+  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "assert.h"
+#include "embUnit.h"
+
+#define TEST_STRING_7   ("7")
+
+static const char *num = "7";
+
+static void test_string_macro(void)
+{
+    TEST_ASSERT_EQUAL_STRING(TEST_STRING_7, num);
+}
+
+static void test_string_array(void)
+{
+    int digit = 7;
+    char should_be[2] = { '0' + digit, 0 };
+    TEST_ASSERT_EQUAL_STRING(should_be, num);
+}
+
+TestRef test_embunit(void)
+{
+    EMB_UNIT_TESTFIXTURES(fixtures) {
+        new_TestFixture(test_string_macro),
+        new_TestFixture(test_string_array)
+    };
+
+    EMB_UNIT_TESTCALLER(tests_embunit, NULL, NULL, fixtures);
+    return (TestRef) & tests_embunit;
+}
+
+int main(void)
+{
+    TESTS_START();
+    TESTS_RUN(test_embunit());
+    TESTS_END();
+}
diff --git a/tests/embunit/tests/01-run.py b/tests/embunit/tests/01-run.py
new file mode 100755
index 0000000000000000000000000000000000000000..5fc8788f24cbb51d21b196745921c8631a9c674d
--- /dev/null
+++ b/tests/embunit/tests/01-run.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2017 Freie Universität Berlin
+#
+# This file is subject to the terms and conditions of the GNU Lesser
+# General Public License v2.1. See the file LICENSE in the top level
+# directory for more details.
+
+import sys
+from testrunner import run
+
+
+def testfunc(child):
+    child.expect(r'OK \(\d+ tests\)')
+
+
+if __name__ == "__main__":
+    sys.exit(run(testfunc))