diff --git a/tests/pkg_tweetnacl/Makefile b/tests/pkg_tweetnacl/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..818a1219571f6db9ac8a80879aae11b20de950f4
--- /dev/null
+++ b/tests/pkg_tweetnacl/Makefile
@@ -0,0 +1,18 @@
+include ../Makefile.tests_common
+
+BOARD_INSUFFICIENT_MEMORY := arduino-duemilanove \
+                             arduino-uno \
+                             arduino-mega2560 \
+                             mega-xplained \
+                             nucleo-f031k6 \
+                             nucleo-f042k6 \
+                             #
+
+TEST_ON_CI_WHITELIST += native
+
+CFLAGS += -DTHREAD_STACKSIZE_MAIN=\(5*THREAD_STACKSIZE_DEFAULT\)
+
+USEPKG += tweetnacl
+USEMODULE += embunit
+
+include $(RIOTBASE)/Makefile.include
diff --git a/tests/unittests/tests-tweetnacl/tests-tweetnacl.c b/tests/pkg_tweetnacl/main.c
similarity index 95%
rename from tests/unittests/tests-tweetnacl/tests-tweetnacl.c
rename to tests/pkg_tweetnacl/main.c
index bd94ac88f6855e0c398bf85013ebbf82dbfe6183..b4b1ccd7b04b7f7673150d301d35d6ea77d9c387 100644
--- a/tests/unittests/tests-tweetnacl/tests-tweetnacl.c
+++ b/tests/pkg_tweetnacl/main.c
@@ -23,7 +23,7 @@
 
 #include <tweetnacl.h>
 #include "embUnit.h"
-#include "tests-tweetnacl.h"
+#include "random.h"
 
 static const char message[] = "0123456789abcdef";
 static char r[sizeof(message)];
@@ -127,7 +127,7 @@ static void test_tweetnacl_03(void)
     TEST_ASSERT_EQUAL_INT(-1, res);
 }
 
-Test *tests_tweetnacl_all(void)
+Test *tests_tweetnacl(void)
 {
     EMB_UNIT_TESTFIXTURES(fixtures) {
         new_TestFixture(test_tweetnacl_01),
@@ -139,7 +139,10 @@ Test *tests_tweetnacl_all(void)
     return (Test*)&tweetnacl_tests;
 }
 
-void tests_tweetnacl(void)
+int main(void)
 {
-    TESTS_RUN(tests_tweetnacl_all());
+    TESTS_START();
+    TESTS_RUN(tests_tweetnacl());
+    TESTS_END();
+    return 0;
 }
diff --git a/tests/pkg_tweetnacl/tests/01-run.py b/tests/pkg_tweetnacl/tests/01-run.py
new file mode 100755
index 0000000000000000000000000000000000000000..e877e4c6342cd0ccbd3690e5b130005ecb28dac7
--- /dev/null
+++ b/tests/pkg_tweetnacl/tests/01-run.py
@@ -0,0 +1,22 @@
+#!/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 os
+import sys
+from testrunner import run
+
+
+def testfunc(child):
+    board = os.environ['BOARD']
+    # Increase timeout on "real" hardware
+    timeout = 120 if board is not 'native' else -1
+    child.expect(r'OK \(\d+ tests\)', timeout=timeout)
+
+
+if __name__ == "__main__":
+    sys.exit(run(testfunc))
diff --git a/tests/unittests/Makefile b/tests/unittests/Makefile
index 81aa2d9eeb34074e1acf04f44292a0961c436aee..e866a1258aa4eee2169c7d1d64977bbf1e3547be 100644
--- a/tests/unittests/Makefile
+++ b/tests/unittests/Makefile
@@ -235,7 +235,6 @@ ifneq (, $(filter $(AVR_BOARDS), $(BOARD)))
   LARGE_STACK_TESTS += tests-qDSA
 endif
 
-LARGE_STACK_TESTS += tests-tweetnacl
 ifneq (,$(filter $(LARGE_STACK_TESTS), $(UNIT_TESTS)))
   CFLAGS += -DTHREAD_STACKSIZE_MAIN=\(4*THREAD_STACKSIZE_DEFAULT+THREAD_EXTRA_STACKSIZE_PRINTF\)
 endif
diff --git a/tests/unittests/tests-tweetnacl/Makefile b/tests/unittests/tests-tweetnacl/Makefile
deleted file mode 100644
index 48422e909a47d7cd428d10fa73825060ccc8d8c2..0000000000000000000000000000000000000000
--- a/tests/unittests/tests-tweetnacl/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-include $(RIOTBASE)/Makefile.base
diff --git a/tests/unittests/tests-tweetnacl/Makefile.include b/tests/unittests/tests-tweetnacl/Makefile.include
deleted file mode 100644
index 0cfb96f9fa87b04ee3b3527f8175212073029c93..0000000000000000000000000000000000000000
--- a/tests/unittests/tests-tweetnacl/Makefile.include
+++ /dev/null
@@ -1,2 +0,0 @@
-USEMODULE += random
-USEPKG += tweetnacl
diff --git a/tests/unittests/tests-tweetnacl/tests-tweetnacl.h b/tests/unittests/tests-tweetnacl/tests-tweetnacl.h
deleted file mode 100644
index 82eb3ca0e9e31a1848252ea26d5e3e9a00f140dd..0000000000000000000000000000000000000000
--- a/tests/unittests/tests-tweetnacl/tests-tweetnacl.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2016 Martin Landsmann
- *
- * 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.
- */
-
-/**
- * @addtogroup  unittests
- * @{
- *
- * @file
- * @brief       Unittests for the ``tweetnacl`` package
- *
- * @author      Martin Landsmann <Martin.Landsmann@HAW-Hamburg.de>
- */
-#ifndef TESTS_TWEETNACL_H
-#define TESTS_TWEETNACL_H
-
-#include "embUnit/embUnit.h"
-#include "random.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
-*  @brief   The entry point of this test suite.
-*/
-void tests_tweetnacl(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* TESTS_TWEETNACL_H */
-/** @} */