diff --git a/datok_test.go b/datok_test.go
index 6f2dc11..9e0d9a6 100644
--- a/datok_test.go
+++ b/datok_test.go
@@ -11,6 +11,8 @@
 	"github.com/stretchr/testify/assert"
 )
 
+var dat *DaTokenizer
+
 func tmatch(tok Tokenizer, s string) bool {
 	b := make([]byte, 0, 2048)
 	w := bytes.NewBuffer(b)
@@ -168,7 +170,10 @@
 
 func TestDoubleArrayFullTokenizer(t *testing.T) {
 	assert := assert.New(t)
-	dat := LoadDatokFile("testdata/tokenizer.datok")
+
+	if dat == nil {
+		dat = LoadDatokFile("testdata/tokenizer.datok")
+	}
 	assert.NotNil(dat)
 	assert.True(dat.LoadFactor() >= 70)
 	assert.Equal(dat.epsilon, 1)
@@ -207,7 +212,10 @@
 func TestDoubleArrayFullTokenizerTransduce(t *testing.T) {
 	assert := assert.New(t)
 
-	dat := LoadDatokFile("testdata/tokenizer.datok")
+	if dat == nil {
+		dat = LoadDatokFile("testdata/tokenizer.datok")
+	}
+
 	assert.NotNil(dat)
 
 	b := make([]byte, 0, 2048)
@@ -236,7 +244,11 @@
 
 func TestDoubleArrayFullTokenizerSentenceSplitter(t *testing.T) {
 	assert := assert.New(t)
-	dat := LoadDatokFile("testdata/tokenizer.datok")
+
+	if dat == nil {
+		dat = LoadDatokFile("testdata/tokenizer.datok")
+	}
+
 	assert.NotNil(dat)
 
 	b := make([]byte, 0, 2048)
@@ -326,7 +338,11 @@
 
 func TestDoubleArrayFullTokenizerTokenSplitter(t *testing.T) {
 	assert := assert.New(t)
-	dat := LoadDatokFile("testdata/tokenizer.datok")
+
+	if dat == nil {
+		dat = LoadDatokFile("testdata/tokenizer.datok")
+	}
+
 	assert.NotNil(dat)
 
 	b := make([]byte, 0, 2048)
@@ -872,7 +888,10 @@
 func TestDoubleArrayFullTokenizerXML(t *testing.T) {
 	assert := assert.New(t)
 
-	dat := LoadDatokFile("testdata/tokenizer.datok")
+	if dat == nil {
+		dat = LoadDatokFile("testdata/tokenizer.datok")
+	}
+
 	assert.NotNil(dat)
 
 	b := make([]byte, 0, 2048)
