xUnit(The xUnit Example) 前準備(Set the Table)
テスト駆動開発 (Kent Beck(著)、和田 卓人(翻訳)、オーム社)の第Ⅱ部(xUnit(The xUnit Example))、第19章(前準備(Set the Table))をPythonではなくGo言語で取り組んでみる。
コード
package main
import (
"fmt"
"os"
)
// TestCase ...
type TestCase struct {
name string
}
// NewTestCase ...
func NewTestCase(name string) *TestCase {
return &TestCase{name: name}
}
// WasRun ...
type WasRun struct {
*TestCase
wasRun int
}
// NewWasRun ...
func NewWasRun(name string) *WasRun {
t := NewTestCase(name)
return &WasRun{wasRun: 0, TestCase: t}
}
func (wr *WasRun) setUp() {
wr.wasRun = 1
}
func (wr *WasRun) testMethod() {
wr.wasRun = 1
}
func (wr *WasRun) run() {
wr.testMethod()
}
func testTestCase() {
}
func testWasRun() {
test := NewWasRun("testMethod")
before := test.wasRun
if before != 0 {
fmt.Fprint(os.Stderr, "before is not 0")
os.Exit(1)
}
test.run()
after := test.wasRun
if after != 1 {
fmt.Fprint(os.Stderr, "after is not 1")
os.Exit(1)
}
}
func main() {
testWasRun()
}
入出力結果(Terminal, Zsh)
% go run ./main.go
%