🙂
Goで簡単なテストコード付きシステムを制作する
エンジニア歴1年強のEngHarです。
SES勤務で主にDevOps界隈でGoを触っていました。
Python,C等は学生時代触っていましたが、社会人でGo言語に触れ楽しい反面コーディングルールが大分異なり、習得に苦労しています。
現在はあまり現場で使うことはありませんが、改めてGoを始めたいと思いシステムを制作しました。
この記事を読めば、簡単なテストコードの例 と Goの記述例を見ることができ、実行ログもあるので手元の環境で再現できると思います。
どなたかのお役に立てれば光栄です。
何ができたのか
名前、生まれ月日から カラーコード を出力してくれる、パーソナルカラー診断システムを制作しました
例:名前:さとし、生まれつき日:12/10、結果:178,255,82 (緑)
出力されたカラーコードの色をwebサイトで確認してみました
コード
■ メインのコード
package main
import "fmt"
//構造体宣言
type HumanStatus struct{
Name string
BirthdayMonth int
BirthdayDay int
}
//パーソナルカラー診断機能関数 (引数 型)(返り値 型)
func personalColor(personalData HumanStatus) (personalColorData string){
nameLength := len(personalData.Name)
redElement := int((nameLength*255)/10)
greenElement := int((personalData.BirthdayMonth*255)/12)
blueElement := int((personalData.BirthdayDay*255)/31)
personalColorData =fmt.Sprintf("%d,%d,%d",redElement,greenElement,blueElement)
return personalColorData
}
//メインコードここで実行しています
func main() {
personalData := HumanStatus{"haruki",12,31}
myLiteral := fmt.Sprintf("YourColorCode is %s",personalColor(personalData))
fmt.Printf(myLiteral)
}
■テストコード
package main
import "testing"
func Test_personalColor(t *testing.T) {
type args struct {
personalData HumanStatus
}
tests := []struct {
name string
args args
wantPersonalColorData string
}{
{"test1",args{HumanStatus{"haruki",12,31}},"153,255,255"},
{"test2",args{HumanStatus{"erina",1,1}},"127,21,8"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if gotPersonalColorData := personalColor(tt.args.personalData); gotPersonalColorData != tt.wantPersonalColorData {
t.Errorf("personalColor() = %v, want %v", gotPersonalColorData, tt.wantPersonalColorData)
}
})
}
}
func Test_main(t *testing.T) {
tests := []struct {
name string
}{
{"test1"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
main()
})
}
}
ローカルでのテストの実行結果
成功時
PS C:\Users\cast-\CiCdHandsOn\plactis\Go> go test .
ok github.com/GitEngHar/CiCdHandsOn.git/plactis/Go 0.114s
テストコードの以下の部分を変更してテスト失敗させてみました
{"test1",args{HumanStatus{"haruki",12,31}},"153,255,255"}
失敗時
PS C:\Users\cast-\CiCdHandsOn\plactis\Go> go test .
--- FAIL: Test_personalColor (0.00s)
--- FAIL: Test_personalColor/test1 (0.00s)
ghTestActionApps_test.go:20: personalColor() = 153,233,255, want 153,255,255
YourColorCode is 153,255,255FAIL
FAIL github.com/GitEngHar/CiCdHandsOn.git/plactis/Go 0.096s
FAIL
参考にしたサイト
- 参考にしたテストコードの記述方法
https://zenn.dev/shinshin/articles/b499b76e08d2f1
上記リンク先に詳細の記載はありますが、Goでテストコードを記述する際は、ファイル名&関数名に規則があるので注意してください
Discussion