diff --git a/http_test.go b/http_test.go
index 786c75dca55a9e0b25f1ffe51978ca370ebd91d4..87ffbd676430cae684ab459da06ae7fbfef7d1d0 100644
--- a/http_test.go
+++ b/http_test.go
@@ -1,8 +1,11 @@
 package gosdn
 
 import (
+	"errors"
+	"net"
 	"net/http"
 	"testing"
+	"time"
 )
 
 func Test_httpApi(t *testing.T) {
@@ -34,6 +37,13 @@ func Test_httpApi(t *testing.T) {
 	coreLock.Lock()
 	startHttpServer()
 	coreLock.Unlock()
+
+	err := waitForHTTPServer()
+	if err != nil {
+		t.Errorf("httpApi() error = %v", err)
+		return
+	}
+
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			got, err := http.Get(tt.request)
@@ -47,3 +57,20 @@ func Test_httpApi(t *testing.T) {
 		})
 	}
 }
+
+// see: https://stackoverflow.com/a/56865986
+func waitForHTTPServer() error {
+	for i := 0; i < 10; i++ {
+		conn, err := net.DialTimeout("tcp", ":8080", 1*time.Second)
+		if err != nil {
+			time.Sleep(50 * time.Millisecond)
+			continue
+		}
+		err = conn.Close()
+		if err != nil {
+			return err
+		}
+		return nil
+	}
+	return errors.New("HTTP server could not be reached.")
+}