Bird
Raised Fist0
Goprogramming~10 mins

Testing package overview in Go - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the testing package.

Go
import [1]
Drag options to blanks, or click blank then click option'
A"testing"
B"fmt"
C"os"
D"net/http"
Attempts:
3 left
💡 Hint
Common Mistakes
Importing unrelated packages like fmt or os instead of testing.
2fill in blank
medium

Complete the function signature for a test function.

Go
func TestExample([1] *testing.T) { }
Drag options to blanks, or click blank then click option'
Atesting
Bt
Ctest
DT
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect parameter names or types.
3fill in blank
hard

Fix the error in the test function to fail the test on error.

Go
func TestFail(t *testing.T) {
    if err != nil {
        t.[1]("Error occurred")
    }
}
Drag options to blanks, or click blank then click option'
AErrorf
BLog
CFatalf
DFailNow
Attempts:
3 left
💡 Hint
Common Mistakes
Using Log or Errorf which do not stop the test.
4fill in blank
hard

Fill both blanks to create a subtest with a name and a function.

Go
t.Run([1], func([2] *testing.T) {
    // test code
})
Drag options to blanks, or click blank then click option'
A"SubTest1"
Bt
Ctest
D"Test"
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect parameter names or missing quotes for the subtest name.
5fill in blank
hard

Fill all three blanks to create a benchmark function with a loop.

Go
func BenchmarkExample([1] *testing.B) {
    for [2] := 0; [2] < [3].N; [2]++ {
        // benchmark code
    }
}
Drag options to blanks, or click blank then click option'
Ab
Bi
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong parameter names or loop conditions.

Practice

(1/5)
1. What is the main purpose of the testing package in Go?
easy
A. To compile Go programs faster
B. To create graphical user interfaces
C. To manage database connections
D. To write functions that check if your code works correctly

Solution

  1. Step 1: Understand the role of the testing package

    The testing package is designed to help write tests that verify code correctness.
  2. Step 2: Identify the correct purpose

    It does not handle GUIs, databases, or compilation speed but focuses on testing functions.
  3. Final Answer:

    To write functions that check if your code works correctly -> Option D
  4. Quick Check:

    testing package = write test functions [OK]
Hint: Testing package is for checking code correctness [OK]
Common Mistakes:
  • Confusing testing with UI or database packages
  • Thinking it speeds up compilation
  • Assuming it manages runtime behavior
2. Which of the following is the correct way to name a test function in Go using the testing package?
easy
A. func TestMyFunction(t *testing.T) {}
B. func testMyFunction(t *testing.T) {}
C. func MyFunctionTest(t *testing.T) {}
D. func TestingMyFunction(t *testing.T) {}

Solution

  1. Step 1: Recall test function naming rules

    Test functions must start with uppercase 'Test' followed by the function name.
  2. Step 2: Match the correct naming pattern

    Only func TestMyFunction(t *testing.T) {} uses 'Test' prefix correctly and has the right signature.
  3. Final Answer:

    func TestMyFunction(t *testing.T) {} -> Option A
  4. Quick Check:

    Test functions start with 'Test' [OK]
Hint: Test functions start with uppercase 'Test' [OK]
Common Mistakes:
  • Starting function name with lowercase 'test'
  • Placing 'Test' at the end of the function name
  • Using incorrect function signature
3. What will be the output when running go test on this test file?
package main

import "testing"

func TestSum(t *testing.T) {
  total := 2 + 3
  if total != 5 {
    t.Error("Sum was incorrect")
  }
}
medium
A. Syntax error: missing return type
B. FAIL Sum was incorrect
C. PASS ok main 0.001s
D. No tests to run

Solution

  1. Step 1: Analyze the test logic

    The test calculates 2 + 3 and checks if it equals 5, which is true, so no error is called.
  2. Step 2: Understand test output

    Since the test passes, go test reports PASS with timing info.
  3. Final Answer:

    PASS ok main 0.001s -> Option C
  4. Quick Check:

    Correct test = PASS output [OK]
Hint: If no t.Error called, test passes [OK]
Common Mistakes:
  • Assuming test fails without error call
  • Confusing syntax errors with test failures
  • Expecting output when no tests exist
4. Identify the error in this test function:
package main

import "testing"

func TestMultiply(t *testing.T) {
  result := 3 * 4
  if result = 12 {
    t.Log("Multiplication correct")
  }
}
medium
A. t.Log cannot be used inside tests
B. Using assignment '=' instead of comparison '==' in if condition
C. Test function name should be lowercase
D. Missing import of fmt package

Solution

  1. Step 1: Check the if condition syntax

    The condition uses '=' which assigns value instead of '==' which compares values.
  2. Step 2: Understand Go syntax rules

    Using '=' in if condition causes a compile error; '==' is needed for comparison.
  3. Final Answer:

    Using assignment '=' instead of comparison '==' in if condition -> Option B
  4. Quick Check:

    Use '==' for comparison in if [OK]
Hint: Use '==' for comparisons, not '=' [OK]
Common Mistakes:
  • Confusing assignment '=' with equality '=='
  • Thinking t.Log is disallowed
  • Ignoring function naming conventions
5. You want to write a test that fails if a function returns an empty string. Which of these test snippets correctly uses the testing package to do this?
func TestNonEmpty(t *testing.T) {
  result := getName()
  // Which check is correct?
}
hard
A. if result == "" { t.Error("Result should not be empty") }
B. if result != "" { t.Error("Result should not be empty") }
C. if result == nil { t.Error("Result should not be empty") }
D. if result == 0 { t.Error("Result should not be empty") }

Solution

  1. Step 1: Understand the test goal

    The test must fail if the returned string is empty, so check if result equals empty string.
  2. Step 2: Choose the correct condition

    if result == "" { t.Error("Result should not be empty") } checks if result == "" and calls t.Error, which correctly fails the test on empty string.
  3. Final Answer:

    if result == "" { t.Error("Result should not be empty") } -> Option A
  4. Quick Check:

    Fail test when string is empty [OK]
Hint: Check empty string with == "" to fail test [OK]
Common Mistakes:
  • Using != instead of == for empty check
  • Comparing string to nil or 0
  • Not calling t.Error on failure condition
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard