[Go] assert パッケージを使ってスライスの要素が順不同で期待通りであることを確かめる

作成日: 2022年10月28日

assert パッケージの ElementsMatch 関数を使用すると、スライスの要素が順番を無視して要素の内容が期待と一致することを確かめることができます。

まず、テスト対象とする関数 ReturnSlice を作成します。固定のスライスを返します。

package main

func ReturnSlice() []string {
    return []string{"one", "two", "three"}
}

次に、ReturnSlice 関数をテストするファイルを作成します。

package main

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestReturnSlice(t *testing.T) {
    assert := assert.New(t)

    got := ReturnSlice()
    assert.ElementsMatch([]string{"three", "one", "two"}, got)
}
  • assert.New(t)*assert.Assertions を初期化します。
  • assert.ElementsMatch([]string{"three", "one", "two"}, got) でスライスが期待通りであるか確かめます。ReturnSlice 関数が返すスライスと順番が異なっていますが、構成している要素は一致しているため、このテストはパスします。
Go