diff --git a/dependency/resolver.go b/dependency/resolver.go
index b3000ee..edcc13c 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -3,6 +3,7 @@
 import (
 	"container/list"
 	"runtime"
+	"sort"
 	//"go/build"
 	"os"
 	"path/filepath"
@@ -303,7 +304,7 @@
 			}
 		} else {
 			imps = p.Imports
-			testImps = p.TestImports
+			testImps = dedupeStrings(p.TestImports, p.XTestImports)
 		}
 
 		// We are only looking for dependencies in vendor. No root, cgo, etc.
@@ -536,7 +537,7 @@
 			continue
 		} else {
 			if testDeps {
-				imps = pkg.TestImports
+				imps = dedupeStrings(pkg.TestImports, pkg.XTestImports)
 			} else {
 				imps = pkg.Imports
 			}
@@ -799,7 +800,7 @@
 		return []string{}, err
 	} else {
 		if testDeps {
-			imps = p.TestImports
+			imps = dedupeStrings(p.TestImports, p.XTestImports)
 		} else {
 			imps = p.Imports
 		}
@@ -1078,3 +1079,29 @@
 
 	return basedir, nil
 }
+
+// helper func to merge, dedupe, and sort strings
+func dedupeStrings(s1, s2 []string) (r []string) {
+	dedupe := make(map[string]bool)
+
+	if len(s1) > 0 && len(s2) > 0 {
+		for _, i := range s1 {
+			dedupe[i] = true
+		}
+		for _, i := range s2 {
+			dedupe[i] = true
+		}
+
+		for i := range dedupe {
+			r = append(r, i)
+		}
+		// And then re-sort them
+		sort.Strings(r)
+	} else if len(s1) > 0 {
+		r = s1
+	} else if len(s2) > 0 {
+		r = s2
+	}
+
+	return
+}
