HOWTO · Go

Go でアサートを使用する

このチュートリアルでは、GoLang で assert を使用する方法を示します。

このページの内容

このチュートリアルでは、GoLang で assert を使用する方法を示します。

GoLang で assert を使用する

GoLang は assert の組み込みサポートを提供していませんが、Testify API から広く使用されているサードパーティ パッケージ assert を使用できます。 assert パッケージは、他の言語の assert メソッドと同様に、GoLang コードをテストするために使用されます。

assert パッケージは、Go システムをテストするための包括的なツールを提供します。 さまざまなテストの種類に対応する多くの方法を提供します。 assert メソッドに関する情報は こちら で確認できます。

assert パッケージを使用する前に、ダウンロードしてロードする必要があります。 assert パッケージを取得するには、以下の手順に従います。

  • 管理者としてコマンド プロンプトを開きます。
  • Go プロジェクトのディレクトリに移動します。

    Go プロジェクト ディレクトリ

  • go.mod ファイルがないことを確認してください。 ディレクトリに go.mod ファイルが含まれている場合は、それを削除してから次の手順に進みます。
  • assert パッケージの go.mod ファイルを初期化し、次のコマンドを実行します。
    go mod init github.com/stretchr/testify/assert
    

    Go Mod Init

  • assert パッケージをダウンロードしてインストールします。 次のコマンドを実行します。
    go get github.com/stretchr/testify/assert
    

    Go Get Assert

  • 上記のコードは assert パッケージをプルしますが、他の依存関係も必要になる場合があります。 次のコマンドを実行して、他のすべての依存関係をダウンロードします。
    go mod download
    

パッケージをダウンロードしてインストールしたら、テストを実行できます。 例を試してみましょう:

package main

import (
    "testing"

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

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

    var Demo1 string = "Hello, This is delftstack.com!"
    var Demo2 string = "Hello, This is delftstack.com!"

    assert.Equal(Demo1, Demo2, "Both strings should be equal")
}

上記のコードは、2つの文字列が等しいかどうかをテストします。 文字列が等しい場合、テストに合格します。 それ以外の場合は、失敗しました。

出力を参照してください。

=== RUN   TestAssert
--- PASS: TestAssert (0.00s)
PASS

上記の出力は、テストに合格したことを示しています。 しかし、テストが失敗した場合はどうなりますか?

assert テストが失敗する例を試してみましょう。

package main

import (
    "testing"

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

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

    var Demo1 string = "Hello, This is delftstack.com!"
    var Demo2 string = "Hello, This is delftstack"

    assert.Equal(Demo1, Demo2, "Both strings should be equal")
}

ご覧のとおり、両方の文字列が等しくないため、テストは失敗するはずです。 出力を参照してください。

RUN   TestAssert
    prog.go:15:
            Error Trace:    /prog.go:15
            Error:          Not equal:
                            expected: "Hello, This is delftstack.com!"
                            actual  : "Hello, This is delftstack"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -1 +1 @@
                            -Hello, This is delftstack.com!
                            +Hello, This is delftstack
            Test:           TestAssert
            Messages:       Both strings should be equal
--- FAIL: TestAssert (0.00s)
FAIL

Program exited.

ご覧のとおり、テストは失敗し、プログラムはテストに関する完全な情報を表示します。 equal のような多くのメソッドがあり、assert と一緒に使用してさまざまなテストを実行できます。

メソッド assert.Nilassert.NotNil の例を試してみましょう:

package main

import (
    "testing"

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

func TestAssert(t *testing.T) {

    var demo = []string{
        "delftstack.123@hotmail.com",
        "Delftstack <demo@delftstack.com>",
        "demo@delftstack.tv",
        "demohotmail.com",
        "demo@"}

    // assert for nil
    assert.Nil(t, demo)

}

上記のコードは、値の指定されたオブジェクトをチェックします-それが nil の場合。 出力を参照してください。

=== RUN   TestAssert
    prog.go:19:
            Error Trace:    /prog.go:19
            Error:          Expected nil, but got: []string{"delftstack.123@hotmail.com", "Delftstack <demo@delftstack.com>", "demo@delftstack.tv", "demohotmail.com", "demo@"}
            Test:           TestAssert
--- FAIL: TestAssert (0.00s)
FAIL

Program exited.

同様に、

package main

import (
    "testing"

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

func TestAssert(t *testing.T) {

    var demo = []string{
        "delftstack.123@hotmail.com",
        "Delftstack <demo@delftstack.com>",
        "demo@delftstack.tv",
        "demohotmail.com",
        "demo@"}

    // assert for not nil
    assert.NotNil(t, demo)

}

上記のコードは、nil オブジェクトまたは値ではないかどうかをテストします。 出力を参照してください。

=== RUN   TestAssert
--- PASS: TestAssert (0.00s)
PASS

Program exited.