diff --git a/sqlite_test.go b/sqlite_test.go
index 33f3a6485013ae98a950ee9818bc85e20b500926..445a0b9093af930dc8108967b6a0d4f6a6863440 100644
--- a/sqlite_test.go
+++ b/sqlite_test.go
@@ -7,11 +7,15 @@ import (
 	"testing"
 )
 
-func open(t *testing.T) *Conn {
-	db, err := Open("", OPEN_READWRITE, OPEN_CREATE, OPEN_FULLMUTEX, OPEN_URI)
+func checkNoError(t *testing.T, err error, format string) {
 	if err != nil {
-		t.Fatalf("couldn't open database file: %s", err)
+		t.Fatalf(format, err)
 	}
+}
+
+func open(t *testing.T) *Conn {
+	db, err := Open("", OPEN_READWRITE, OPEN_CREATE, OPEN_FULLMUTEX, OPEN_URI)
+	checkNoError(t, err, "couldn't open database file: %s")
 	if db == nil {
 		t.Fatal("opened database is nil")
 	}
@@ -23,9 +27,7 @@ func createTable(db *Conn, t *testing.T) {
 	err := db.Exec("DROP TABLE IF EXISTS test;" +
 		"CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT," +
 		" float_num REAL, int_num INTEGER, a_string TEXT); -- bim")
-	if err != nil {
-		t.Fatalf("error creating table: %s", err)
-	}
+	checkNoError(t, err, "error creating table: %s")
 }
 
 func TestVersion(t *testing.T) {
@@ -37,9 +39,7 @@ func TestVersion(t *testing.T) {
 
 func TestOpen(t *testing.T) {
 	db := open(t)
-	if err := db.Close(); err != nil {
-		t.Fatalf("Error closing database: %s", err)
-	}
+	checkNoError(t, db.Close(), "Error closing database: %s")
 }
 
 func TestEnableFKey(t *testing.T) {
@@ -57,17 +57,13 @@ func TestEnableFKey(t *testing.T) {
 func TestEnableExtendedResultCodes(t *testing.T) {
 	db := open(t)
 	defer db.Close()
-	if err := db.EnableExtendedResultCodes(true); err != nil {
-		t.Fatalf("cannot enabled extended result codes: %s", err)
-	}
+	checkNoError(t, db.EnableExtendedResultCodes(true), "cannot enabled extended result codes: %s")
 }
 
 func TestIntegrityCheck(t *testing.T) {
 	db := open(t)
 	defer db.Close()
-	if err := db.IntegrityCheck(1, true); err != nil {
-		t.Fatalf("Error checking integrity of database: %s", err)
-	}
+	checkNoError(t, db.IntegrityCheck(1, true), "Error checking integrity of database: %s")
 }
 
 func TestCreateTable(t *testing.T) {
@@ -79,15 +75,11 @@ func TestCreateTable(t *testing.T) {
 func TestTransaction(t *testing.T) {
 	db := open(t)
 	defer db.Close()
-	if err := db.Begin(); err != nil {
-		t.Fatalf("Error while beginning transaction: %s", err)
-	}
+	checkNoError(t, db.Begin(), "Error while beginning transaction: %s")
 	if err := db.Begin(); err == nil {
 		t.Fatalf("Error expected (transaction cannot be nested)")
 	}
-	if err := db.Commit(); err != nil {
-		t.Fatalf("Error while commiting transaction: %s", err)
-	}
+	checkNoError(t, db.Commit(), "Error while commiting transaction: %s")
 }
 
 func TestExists(t *testing.T) {
@@ -110,17 +102,13 @@ func TestInsert(t *testing.T) {
 	db.Begin()
 	for i := 0; i < 1000; i++ {
 		ierr := db.Exec("INSERT INTO test (float_num, int_num, a_string) VALUES (?, ?, ?)", float64(i)*float64(3.14), i, "hello")
-		if ierr != nil {
-			t.Fatalf("insert error: %s", ierr)
-		}
+		checkNoError(t, ierr, "insert error: %s")
 		c := db.Changes()
 		if c != 1 {
 			t.Errorf("insert error: %d but got 1", c)
 		}
 	}
-	if err := db.Commit(); err != nil {
-		t.Fatalf("Error: %s", err)
-	}
+	checkNoError(t, db.Commit(), "Error: %s")
 
 	lastId := db.LastInsertRowid()
 	if lastId != 1000 {
@@ -143,10 +131,7 @@ func TestInsert(t *testing.T) {
 		t.Fatal("no result for count")
 	}
 	var i int
-	err := cs.Scan(&i)
-	if err != nil {
-		t.Fatalf("error scanning count: %s", err)
-	}
+	checkNoError(t, cs.Scan(&i), "error scanning count: %s")
 	if i != 1000 {
 		t.Errorf("count should be 1000, but it is %d", i)
 	}
@@ -157,9 +142,7 @@ func TestInsertWithStatement(t *testing.T) {
 	defer db.Close()
 	createTable(db, t)
 	s, serr := db.Prepare("INSERT INTO test (float_num, int_num, a_string) VALUES (:f, :i, :s)")
-	if serr != nil {
-		t.Fatalf("prepare error: %s", serr)
-	}
+	checkNoError(t, serr, "prepare error: %s")
 	if s == nil {
 		t.Fatal("statement is nil")
 	}
@@ -185,17 +168,13 @@ func TestInsertWithStatement(t *testing.T) {
 	db.Begin()
 	for i := 0; i < 1000; i++ {
 		c, ierr := s.ExecUpdate(float64(i)*float64(3.14), i, "hello")
-		if ierr != nil {
-			t.Fatalf("insert error: %s", ierr)
-		}
+		checkNoError(t, ierr, "insert error: %s")
 		if c != 1 {
 			t.Errorf("insert error: %d but got 1", c)
 		}
 	}
 
-	if err := db.Commit(); err != nil {
-		t.Fatalf("Error: %s", err)
-	}
+	checkNoError(t, db.Commit(), "Error: %s")
 
 	cs, _ := db.Prepare("SELECT COUNT(*) FROM test")
 	defer cs.Finalize()
@@ -206,10 +185,7 @@ func TestInsertWithStatement(t *testing.T) {
 		t.Fatal("no result for count")
 	}
 	var i int
-	err := cs.Scan(&i)
-	if err != nil {
-		t.Fatalf("error scanning count: %s", err)
-	}
+	checkNoError(t, cs.Scan(&i), "error scanning count: %s")
 	if i != 1000 {
 		t.Errorf("count should be 1000, but it is %d", i)
 	}
@@ -271,48 +247,32 @@ func TestBlob(t *testing.T) {
 	defer db.Close()
 
 	err := db.Exec("CREATE TABLE test (content BLOB);")
-	if err != nil {
-		t.Fatalf("error creating tables: %s", err)
-	}
+	checkNoError(t, err, "error creating table: %s")
 	s, err := db.Prepare("INSERT INTO test VALUES (?)")
-	if err != nil {
-		t.Fatalf("prepare error: %s", err)
-	}
+	checkNoError(t, err, "prepare error: %s")
 	if s == nil {
 		t.Fatal("statement is nil")
 	}
 	defer s.Finalize()
 	err = s.Exec(ZeroBlobLength(10))
-	if err != nil {
-		t.Fatalf("insert error: %s", err)
-	}
+	checkNoError(t, err, "insert error: %s")
 	rowid := db.LastInsertRowid()
 
 	bw, err := db.NewBlobReadWriter("main", "test", "content", rowid)
-	if err != nil {
-		t.Fatalf("blob open error: %s", err)
-	}
+	checkNoError(t, err, "blob open error: %s")
 	defer bw.Close()
 	content := []byte("Clob")
 	n, err := bw.Write(content)
-	if err != nil {
-		t.Fatalf("blob write error: %s", err)
-	}
+	checkNoError(t, err, "blob write error: %s")
 
 	br, err := db.NewBlobReader("main", "test", "content", rowid)
-	if err != nil {
-		t.Fatalf("blob open error: %s", err)
-	}
+	checkNoError(t, err, "blob open error: %s")
 	defer br.Close()
 	size, err := br.Size()
-	if err != nil {
-		t.Fatalf("blob size error: %s", err)
-	}
+	checkNoError(t, err, "blob size error: %s")
 	content = make([]byte, size)
 	n, err = br.Read(content)
-	if err != nil {
-		t.Fatalf("blob read error: %s", err)
-	}
+	checkNoError(t, err, "blob read error: %s")
 	if n != 10 {
 		t.Fatalf("Expected 10 bytes but got %d", n)
 	}
@@ -325,9 +285,7 @@ func TestScanColumn(t *testing.T) {
 	defer db.Close()
 
 	s, err := db.Prepare("select 1, null, 0")
-	if err != nil {
-		t.Fatalf("prepare error: %s", err)
-	}
+	checkNoError(t, err, "prepare error: %s")
 	defer s.Finalize()
 	if !Must(s.Next()) {
 		t.Fatal("no result")
@@ -358,9 +316,7 @@ func TestNamedScanColumn(t *testing.T) {
 	defer db.Close()
 
 	s, err := db.Prepare("select 1 as i1, null as i2, 0 as i3")
-	if err != nil {
-		t.Fatalf("prepare error: %s", err)
-	}
+	checkNoError(t, err, "prepare error: %s")
 	defer s.Finalize()
 	if !Must(s.Next()) {
 		t.Fatal("no result")
@@ -391,9 +347,7 @@ func TestScanCheck(t *testing.T) {
 	defer db.Close()
 
 	s, err := db.Prepare("select 'hello'")
-	if err != nil {
-		t.Fatalf("prepare error: %s", err)
-	}
+	checkNoError(t, err, "prepare error: %s")
 	defer s.Finalize()
 	if !Must(s.Next()) {
 		t.Fatal("no result")
@@ -422,8 +376,6 @@ func TestLoadExtension(t *testing.T) {
 	db.EnableLoadExtension(true)
 
 	err := db.LoadExtension("/tmp/myext.so")
-	if err != nil {
-		t.Errorf("load extension error: %s", err)
-	}
+	checkNoError(t, err, "load extension error: %s")
 }
 */
diff --git a/trace_test.go b/trace_test.go
index 8ba8f80aef6491261171454c414bcb6723e3c723..18760a30307465ee3db2b8a27b253d053f5eeb81 100644
--- a/trace_test.go
+++ b/trace_test.go
@@ -47,9 +47,7 @@ func log(d interface{}, err error, msg string) {
 
 func TestNoTrace(t *testing.T) {
 	db, err := Open("")
-	if err != nil {
-		t.Fatalf("couldn't open database file: %s", err)
-	}
+	checkNoError(t, err, "couldn't open database: %s")
 	defer db.Close()
 	db.Trace(nil, nil)
 	db.SetAuthorizer(nil, nil)
@@ -63,15 +61,11 @@ func TestNoTrace(t *testing.T) {
 
 func TestTrace(t *testing.T) {
 	db, err := Open("")
-	if err != nil {
-		t.Fatalf("couldn't open database file: %s", err)
-	}
+	checkNoError(t, err, "couldn't open database: %s")
 	defer db.Close()
 	db.Trace(trace, "TRACE")
 	err = db.SetAuthorizer(authorizer, "AUTH")
-	if err != nil {
-		t.Fatal("couldn't set an authorizer", err)
-	}
+	checkNoError(t, err, "couldn't set an authorizer")
 	db.Profile(profile, "PROFILE")
 	db.ProgressHandler(progressHandler, 1, /*20*/ nil)
 	db.CommitHook(commitHook, "CMT")