Go Testing: Difference between revisions
Jump to navigation
Jump to search
Line 80: | Line 80: | ||
</font> | </font> | ||
=TO | =TO DO= | ||
<font color=darkkhaki> | <font color=darkkhaki> | ||
* Integrate see [[Go_Packages#External_Test_Packages|external test packages]]. | |||
* Testing idiom "Introducing Go" page 96. | |||
</font> | |||
Revision as of 02:16, 16 September 2023
External
Internal
Overview
Go comes with a lightweight test framework that includes the go test
command and the testing
package. The tests live in *_test.go
files.
Write a Unit Test
Write a module as shown here:
For each file containing behavior to test (a.go
)
package a
func Reverse(s string) string {
rs := []rune(s)
var result []rune
for i := len(rs) - 1; i >= 0; i-- {
result = append(result, rs[i])
}
return string(result)
}
add a <file-name>_test.go
test file. In this case a_test.go
. These files are ignored by the compiler and only compiled and executed when go test
is run.
The test files should be part of the same package.
The test files should import testing
.
Add individual tests, as functions starting with Test...
and taking an argument t *testing.T
:
func Test...(t *testing.T) {
...
t.Error("expected this: %q, got that: %q ", ...)
}
package a
import "testing"
func TestReverseEmptyString(t *testing.T) {
expected := ""
result := Reverse("")
if result != expected {
t.Errorf("expected %q, got %q", expected, result)
}
}
func TestReverseOneCharString(t *testing.T) {
expected := "a"
result := Reverse("a")
if result != expected {
t.Errorf("expected %q, got %q", expected, result)
}
}
func TestReverseTwoCharString(t *testing.T) {
expected := "ba"
result := Reverse("ab")
if result != expected {
t.Errorf("expected %q, got %q", expected, result)
}
}
From the module directory, run the tests:
go test
PASS ok example.com/a 0.116s
TO DO
- Integrate see external test packages.
- Testing idiom "Introducing Go" page 96.