0
0
Goprogramming~20 mins

Testing package overview in Go - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Go Testing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of a simple test function
What is the output when running this Go test code?
Go
package main

import (
	"testing"
)

func TestSum(t *testing.T) {
	sum := 2 + 3
	if sum != 5 {
		t.Errorf("Expected 5 but got %d", sum)
	}
}

func main() {}
ANo output because main() is empty
BCompilation error due to missing main function
C
FAIL
--- FAIL: TestSum (0.00s)
    main_test.go:7: Expected 5 but got 6
D
PASS
ok   	command-line-arguments	0.001s
Attempts:
2 left
💡 Hint
Tests pass silently unless there is an error.
Predict Output
intermediate
2:00remaining
Behavior of t.Fatal in tests
What happens when t.Fatal is called inside a test function?
Go
package main

import (
	"testing"
)

func TestFailNow(t *testing.T) {
	t.Fatal("Fatal error occurred")
	// This line will not run
	t.Log("This will not print")
}

func main() {}
ATest fails immediately and logs the fatal message; subsequent lines are skipped.
BTest logs the fatal message but continues running the rest of the test.
CTest passes because t.Fatal only logs a message.
DCompilation error because t.Fatal cannot be called directly.
Attempts:
2 left
💡 Hint
t.Fatal stops the test immediately after logging.
Predict Output
advanced
2:00remaining
Output of a benchmark function
What output does this benchmark produce when run with 'go test -bench=.'?
Go
package main

import (
	"testing"
)

func BenchmarkLoop(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_ = i * i
	}
}

func main() {}
A
goos: linux
goarch: amd64
BenchmarkLoop-8    1000000000               1.23 ns/op
PASS
B
BenchmarkLoop-8    1000000000               1.23 ms/op
FAIL
CNo output because main() is empty
DCompilation error due to missing testing import
Attempts:
2 left
💡 Hint
Benchmarks report number of iterations and time per operation.
Predict Output
advanced
2:00remaining
Effect of t.Skip in a test
What is the output when t.Skip is called inside a test function?
Go
package main

import (
	"testing"
)

func TestSkipExample(t *testing.T) {
	t.Skip("Skipping this test")
	t.Error("This error will not be reported")
}

func main() {}
A
--- FAIL: TestSkipExample (0.00s)
    main_test.go:8: This error will not be reported
FAIL
B
--- SKIP: TestSkipExample (0.00s)
    main_test.go:7: Skipping this test
PASS
CTest runs normally and reports no skip or fail
DCompilation error due to t.Skip usage
Attempts:
2 left
💡 Hint
t.Skip stops the test and marks it as skipped.
🧠 Conceptual
expert
2:00remaining
Understanding parallel tests with t.Parallel
Which statement best describes the behavior of tests that call t.Parallel() in Go?
ATests calling t.Parallel() run concurrently and immediately without waiting for any other tests.
BTests calling t.Parallel() run sequentially after all non-parallel tests complete.
CTests calling t.Parallel() run concurrently with other parallel tests but wait for the parent test to finish.
DTests calling t.Parallel() cause the test suite to fail if run in parallel.
Attempts:
2 left
💡 Hint
Parallel tests run concurrently but respect the parent test's lifecycle.