diff --git a/catalogue/CMakeLists.txt b/catalogue/CMakeLists.txt
index 93d42e11242d55fda96541ca8d861a949aceed1a..ae98d1fa83106060a86832de97fb14cac1c19b2c 100644
--- a/catalogue/CMakeLists.txt
+++ b/catalogue/CMakeLists.txt
@@ -219,7 +219,9 @@ set (CATALOGUE_CMD_LINE_UNIT_TESTS_LIB_SRC_FILES
   CreateAdminHostCmdLineArgs.cpp
   CreateAdminHostCmdLineArgsTest.cpp
   CreateAdminUserCmdLineArgs.cpp
-  CreateAdminUserCmdLineArgsTest.cpp)
+  CreateAdminUserCmdLineArgsTest.cpp
+  CreateSchemaCmdLineArgs.cpp
+  CreateSchemaCmdLineArgsTest.cpp)
 
 add_library (ctacataloguecmdlineunittests SHARED
   ${CATALOGUE_CMD_LINE_UNIT_TESTS_LIB_SRC_FILES})
diff --git a/catalogue/CreateSchemaCmdLineArgsTest.cpp b/catalogue/CreateSchemaCmdLineArgsTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..137ea087faa6aa43afbda3a4a1dd063642c8f1e8
--- /dev/null
+++ b/catalogue/CreateSchemaCmdLineArgsTest.cpp
@@ -0,0 +1,121 @@
+/*
+ * The CERN Tape Archive(CTA) project
+ * Copyright(C) 2015  CERN
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "common/exception/Exception.hpp"
+#include "catalogue/CreateSchemaCmdLineArgs.hpp"
+
+#include <gtest/gtest.h>
+#include <list>
+
+namespace unitTests {
+
+class cta_catalogue_CreateSchemaCmdLineArgsTest : public ::testing::Test {
+protected:
+
+  struct Argcv {
+    int argc;
+    char **argv;
+    Argcv(): argc(0), argv(NULL) {
+    }
+  };
+  typedef std::list<Argcv*> ArgcvList;
+  ArgcvList m_argsList;
+
+  /**
+   * Creates a duplicate string using the new operator.
+   */
+  char *dupString(const char *str) {
+    const size_t len = strlen(str);
+    char *duplicate = new char[len+1];
+    strncpy(duplicate, str, len);
+    duplicate[len] = '\0';
+    return duplicate;
+  }
+
+  virtual void SetUp() {
+    // Allow getopt_long to be called again
+    optind = 0;
+  }
+
+  virtual void TearDown() {
+    // Allow getopt_long to be called again
+    optind = 0;
+
+    for(ArgcvList::const_iterator itor = m_argsList.begin();
+      itor != m_argsList.end(); itor++) {
+      for(int i=0; i < (*itor)->argc; i++) {
+        delete[] (*itor)->argv[i];
+      }
+      delete[] (*itor)->argv;
+      delete *itor;
+    }
+  }
+};
+
+TEST_F(cta_catalogue_CreateSchemaCmdLineArgsTest, help_short) {
+  using namespace cta::catalogue;
+
+  Argcv *args = new Argcv();
+  m_argsList.push_back(args);
+  args->argc = 2;
+  args->argv = new char *[3];
+  args->argv[0] = dupString("cta-catalogue-schema-create");
+  args->argv[1] = dupString("-h");
+  args->argv[2] = NULL;
+
+  CreateSchemaCmdLineArgs cmdLine(args->argc, args->argv);
+
+  ASSERT_TRUE(cmdLine.help);
+  ASSERT_TRUE(cmdLine.dbConfigPath.empty());
+}
+
+TEST_F(cta_catalogue_CreateSchemaCmdLineArgsTest, help_long) {
+  using namespace cta::catalogue;
+
+  Argcv *args = new Argcv();
+  m_argsList.push_back(args);
+  args->argc = 2;
+  args->argv = new char *[3];
+  args->argv[0] = dupString("cta-catalogue-schema-create");
+  args->argv[1] = dupString("--help");
+  args->argv[2] = NULL;
+
+  CreateSchemaCmdLineArgs cmdLine(args->argc, args->argv);
+
+  ASSERT_TRUE(cmdLine.help);
+  ASSERT_TRUE(cmdLine.dbConfigPath.empty());
+}
+
+TEST_F(cta_catalogue_CreateSchemaCmdLineArgsTest, dbConfigPath) {
+  using namespace cta::catalogue;
+
+  Argcv *args = new Argcv();
+  m_argsList.push_back(args);
+  args->argc = 2;
+  args->argv = new char *[3];
+  args->argv[0] = dupString("cta-catalogue-schema-create");
+  args->argv[1] = dupString("dbConfigPath");
+  args->argv[2] = NULL;
+
+  CreateSchemaCmdLineArgs cmdLine(args->argc, args->argv);
+
+  ASSERT_FALSE(cmdLine.help);
+  ASSERT_EQ(std::string("dbConfigPath"), cmdLine.dbConfigPath);
+}
+
+} // namespace unitTests