いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-604 (nalgeon/be)(シンプルなテスト用アサートライブラリ, True)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

以下のブログ記事から nalgeon/be というライブラリを知りました。

antonz.org

めっちゃシンプルで使いやすいですね。個人的にドンピシャなライブラリです。

こんな感じでシンプルなのが良いんですよ。それぞれがジェネリック対応となっているため、どのような型でもアサート出来るようになっています。

関数も

  • Equal
  • Err
  • True

の3つだけです。

自分用に使い方のメモを残しておくことにしました。今回は True 関数。

サンプル

be_true_test.go

package main

import (
    "errors"
    "fmt"
    "testing"

    "github.com/nalgeon/be"
)

func sum(x ...int) int64 {
    var (
        total int64
    )
    for _, v := range x {
        total += int64(v)
    }

    return total
}

func errSometime(v int) error {
    switch {
    case v > 100:
        return fmt.Errorf("invalid value: %d", v)
    case v > 10:
        return errors.New("invalid value")
    default:
        return nil
    }
}

func TestBeTrue(t *testing.T) {
    t.Run("ok", func(t *testing.T) {
        be.True(t, sum(1, 2, 3) == 6)
    })
    t.Run("ng", func(t *testing.T) {
        be.True(t, sum(1, 2, 3) != 6)
    })
    t.Run("ok2", func(t *testing.T) {
        be.True(t, errSometime(1) == nil)
    })
    t.Run("ng2", func(t *testing.T) {
        be.True(t, errSometime(111) == nil)
    })
}

実行例

$ task
task: [default] go test -v
=== RUN   TestBeTrue
=== RUN   TestBeTrue/ok
=== RUN   TestBeTrue/ng
    be_true_test.go:38: not true
=== RUN   TestBeTrue/ok2
=== RUN   TestBeTrue/ng2
    be_true_test.go:44: not true
--- FAIL: TestBeTrue (0.00s)
    --- PASS: TestBeTrue/ok (0.00s)
    --- FAIL: TestBeTrue/ng (0.00s)
    --- PASS: TestBeTrue/ok2 (0.00s)
    --- FAIL: TestBeTrue/ng2 (0.00s)
FAIL
exit status 1
FAIL    github.com/devlights/try-golang/examples/testing/be_library/true        0.002s

参考情報

antonz.org

github.com

github.com

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。