diff --git a/tests/unit/index.cpp b/tests/unit/index.cpp
index f2cf919..ca96536 100644
--- a/tests/unit/index.cpp
+++ b/tests/unit/index.cpp
@@ -57,10 +57,10 @@
     return *m_interest;
   }
 
-  uint64_t
+  int
   find()
   {
-    std::pair<int,Name> found = m_index.find(*m_interest);
+    std::pair<int, Name> found = m_index.find(*m_interest);
     return found.first;
   }
 
diff --git a/tests/unit/repo-storage.cpp b/tests/unit/repo-storage.cpp
index 9157115..61632ad 100644
--- a/tests/unit/repo-storage.cpp
+++ b/tests/unit/repo-storage.cpp
@@ -53,7 +53,7 @@
     }
 
   // check size directly with the storage (repo doesn't have interface yet)
-  BOOST_CHECK_EQUAL(this->store->size(), this->data.size());
+  BOOST_CHECK_EQUAL(this->store->size(), static_cast<int64_t>(this->data.size()));
 
   // Read
   for (typename T::InterestContainer::iterator i = this->interests.begin();
diff --git a/tests/unit/sqlite-handle.cpp b/tests/unit/sqlite-handle.cpp
index 59c5977..d493e3d 100644
--- a/tests/unit/sqlite-handle.cpp
+++ b/tests/unit/sqlite-handle.cpp
@@ -52,7 +52,7 @@
       this->idToDataMap.insert(std::make_pair(id, *i));
       ids.push_back(id);
     }
-  BOOST_CHECK_EQUAL(this->handle->size(), this->data.size());
+  BOOST_CHECK_EQUAL(this->handle->size(), static_cast<int64_t>(this->data.size()));
 
   std::random_shuffle(ids.begin(), ids.end());
 
@@ -63,7 +63,7 @@
     BOOST_REQUIRE(this->idToDataMap.count(*i) > 0);
     BOOST_CHECK_EQUAL(*this->idToDataMap[*i], *retrievedData);
   }
-  BOOST_CHECK_EQUAL(this->handle->size(), this->data.size());
+  BOOST_CHECK_EQUAL(this->handle->size(), static_cast<int64_t>(this->data.size()));
 
   // Delete
   for (std::vector<int64_t>::iterator i = ids.begin(); i != ids.end(); ++i) {
