diff --git a/pom.xml b/pom.xml
index c5c7e5f..827f914 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,6 +208,11 @@
             		<plugin>
                 		<artifactId>maven-surefire-plugin</artifactId>
                 		<version>2.19.1</version>
+                    <configuration>
+                      <systemPropertyVariables>
+                        <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
+                      </systemPropertyVariables>
+                    </configuration>
                 		<dependencies>
                     			<dependency>
                         			<groupId>org.junit.platform</groupId>
diff --git a/src/test/java/org/apache/gossip/SignedMessageTest.java b/src/test/java/org/apache/gossip/SignedMessageTest.java
index 50e3cb5..5c3bb76 100644
--- a/src/test/java/org/apache/gossip/SignedMessageTest.java
+++ b/src/test/java/org/apache/gossip/SignedMessageTest.java
@@ -26,6 +26,7 @@
 import java.security.NoSuchProviderException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
@@ -56,7 +57,7 @@
             .build();
     gossipService.init();
   }
-  
+
   private GossipSettings gossiperThatSigns(){
     GossipSettings settings = new GossipSettings();
     settings.setPersistRingState(false);
@@ -65,10 +66,16 @@
     return settings;
   }
   
+  private GossipSettings gossiperThatSigns(String keysDir){
+    GossipSettings settings = gossiperThatSigns();
+    settings.setPathToKeyStore(Objects.requireNonNull(keysDir));
+    return settings;
+  }
+  
   @Test
   public void dataTest() throws InterruptedException, URISyntaxException, NoSuchAlgorithmException, NoSuchProviderException, IOException {
-    String keys = "./keys";
-    GossipSettings settings = gossiperThatSigns();
+    final String keys = System.getProperty("java.io.tmpdir") + "/keys";
+    GossipSettings settings = gossiperThatSigns(keys);
     setup(keys);
     String cluster = UUID.randomUUID().toString();
     List<Member> startupMembers = new ArrayList<>();
