diff --git a/tests/block_test.go b/tests/block_test.go
index 4820ba733fe080fdaf84573bf9a2eea37482a07d..f7fbaea2a445d0e435ee7ffe36563a226e080731 100644
--- a/tests/block_test.go
+++ b/tests/block_test.go
@@ -48,10 +48,10 @@ func TestBlockchain(t *testing.T) {
 	// using 4.6 TGas
 	bt.skipLoad(`.*randomStatetest94.json.*`)
 	bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) {
-		if err := bt.checkFailure(t, name+"/trie", test.Run(false)); err != nil {
+		if err := bt.checkFailure(t, test.Run(false)); err != nil {
 			t.Errorf("test without snapshotter failed: %v", err)
 		}
-		if err := bt.checkFailure(t, name+"/snap", test.Run(true)); err != nil {
+		if err := bt.checkFailure(t, test.Run(true)); err != nil {
 			t.Errorf("test with snapshotter failed: %v", err)
 		}
 	})
diff --git a/tests/difficulty_test.go b/tests/difficulty_test.go
index e80cd248bc7d918249cefaeefac46e1e26c3f736..acbf96e71247b19eb9fe7ece4cff6743dc55dd4c 100644
--- a/tests/difficulty_test.go
+++ b/tests/difficulty_test.go
@@ -79,12 +79,12 @@ func TestDifficulty(t *testing.T) {
 	dt.config("difficulty.json", mainnetChainConfig)
 
 	dt.walk(t, difficultyTestDir, func(t *testing.T, name string, test *DifficultyTest) {
-		cfg := dt.findConfig(name)
+		cfg := dt.findConfig(t)
 		if test.ParentDifficulty.Cmp(params.MinimumDifficulty) < 0 {
 			t.Skip("difficulty below minimum")
 			return
 		}
-		if err := dt.checkFailure(t, name, test.Run(cfg)); err != nil {
+		if err := dt.checkFailure(t, test.Run(cfg)); err != nil {
 			t.Error(err)
 		}
 	})
diff --git a/tests/init_test.go b/tests/init_test.go
index 5af3e44bff961ce032762a0efa726f8d402f647a..dc923dc75e606d06aad2d99c6c0c66e2c0ce757a 100644
--- a/tests/init_test.go
+++ b/tests/init_test.go
@@ -167,10 +167,9 @@ func (tm *testMatcher) findSkip(name string) (reason string, skipload bool) {
 }
 
 // findConfig returns the chain config matching defined patterns.
-func (tm *testMatcher) findConfig(name string) *params.ChainConfig {
-	// TODO(fjl): name can be derived from testing.T when min Go version is 1.8
+func (tm *testMatcher) findConfig(t *testing.T) *params.ChainConfig {
 	for _, m := range tm.configpat {
-		if m.p.MatchString(name) {
+		if m.p.MatchString(t.Name()) {
 			return &m.config
 		}
 	}
@@ -178,11 +177,10 @@ func (tm *testMatcher) findConfig(name string) *params.ChainConfig {
 }
 
 // checkFailure checks whether a failure is expected.
-func (tm *testMatcher) checkFailure(t *testing.T, name string, err error) error {
-	// TODO(fjl): name can be derived from t when min Go version is 1.8
+func (tm *testMatcher) checkFailure(t *testing.T, err error) error {
 	failReason := ""
 	for _, m := range tm.failpat {
-		if m.p.MatchString(name) {
+		if m.p.MatchString(t.Name()) {
 			failReason = m.reason
 			break
 		}
diff --git a/tests/rlp_test.go b/tests/rlp_test.go
index 1601625df569b8b0965d65699bddbc364ffc303e..79a1683eb23a75308bf451443132d053228495e8 100644
--- a/tests/rlp_test.go
+++ b/tests/rlp_test.go
@@ -24,7 +24,7 @@ func TestRLP(t *testing.T) {
 	t.Parallel()
 	tm := new(testMatcher)
 	tm.walk(t, rlpTestDir, func(t *testing.T, name string, test *RLPTest) {
-		if err := tm.checkFailure(t, name, test.Run()); err != nil {
+		if err := tm.checkFailure(t, test.Run()); err != nil {
 			t.Error(err)
 		}
 	})
diff --git a/tests/state_test.go b/tests/state_test.go
index b77a898c21f6268bb48465a3c068e5662a94569e..43009afdd533a280c545b7c03a118ca9ebaca156 100644
--- a/tests/state_test.go
+++ b/tests/state_test.go
@@ -64,12 +64,11 @@ func TestState(t *testing.T) {
 			for _, subtest := range test.Subtests() {
 				subtest := subtest
 				key := fmt.Sprintf("%s/%d", subtest.Fork, subtest.Index)
-				name := name + "/" + key
 
 				t.Run(key+"/trie", func(t *testing.T) {
 					withTrace(t, test.gasLimit(subtest), func(vmconfig vm.Config) error {
 						_, _, err := test.Run(subtest, vmconfig, false)
-						return st.checkFailure(t, name+"/trie", err)
+						return st.checkFailure(t, err)
 					})
 				})
 				t.Run(key+"/snap", func(t *testing.T) {
@@ -78,7 +77,7 @@ func TestState(t *testing.T) {
 						if _, err := snaps.Journal(statedb.IntermediateRoot(false)); err != nil {
 							return err
 						}
-						return st.checkFailure(t, name+"/snap", err)
+						return st.checkFailure(t, err)
 					})
 				})
 			}
@@ -117,6 +116,6 @@ func withTrace(t *testing.T, gasLimit uint64, test func(vm.Config) error) {
 	} else {
 		t.Log("EVM operation log:\n" + buf.String())
 	}
-	//t.Logf("EVM output: 0x%x", tracer.Output())
-	//t.Logf("EVM error: %v", tracer.Error())
+	// t.Logf("EVM output: 0x%x", tracer.Output())
+	// t.Logf("EVM error: %v", tracer.Error())
 }
diff --git a/tests/transaction_test.go b/tests/transaction_test.go
index 0e3670d04bf7ae7ad95ba5824e26e522fe735ed5..cb0f2623189c34a2dcba5871ac8c6a3d7b6ec3fb 100644
--- a/tests/transaction_test.go
+++ b/tests/transaction_test.go
@@ -47,7 +47,7 @@ func TestTransaction(t *testing.T) {
 	txt.skipLoad("^ttValue/TransactionWithHighValueOverflow.json")
 	txt.walk(t, transactionTestDir, func(t *testing.T, name string, test *TransactionTest) {
 		cfg := params.MainnetChainConfig
-		if err := txt.checkFailure(t, name, test.Run(cfg)); err != nil {
+		if err := txt.checkFailure(t, test.Run(cfg)); err != nil {
 			t.Error(err)
 		}
 	})
diff --git a/tests/vm_test.go b/tests/vm_test.go
index fb839827acc943cadaf1e19181476d11ea1830af..2150df9e23a53a5089d9a2ebaca4365e1d79a4ff 100644
--- a/tests/vm_test.go
+++ b/tests/vm_test.go
@@ -30,10 +30,10 @@ func TestVM(t *testing.T) {
 
 	vmt.walk(t, vmTestDir, func(t *testing.T, name string, test *VMTest) {
 		withTrace(t, test.json.Exec.GasLimit, func(vmconfig vm.Config) error {
-			return vmt.checkFailure(t, name+"/trie", test.Run(vmconfig, false))
+			return vmt.checkFailure(t, test.Run(vmconfig, false))
 		})
 		withTrace(t, test.json.Exec.GasLimit, func(vmconfig vm.Config) error {
-			return vmt.checkFailure(t, name+"/snap", test.Run(vmconfig, true))
+			return vmt.checkFailure(t, test.Run(vmconfig, true))
 		})
 	})
 }