TestifyにPRした話

自己紹介

  • 悪くないモンスターの太一です。
  • java-jaからきますた
  • さにあらず
  • ryushi@twitter
  • taichi@GitHub
  • taichi#1881 @ Diablo3

Javaの連載書いてます

Testify

知ってる?

使い方


import (
  "testing"
  "github.com/stretchr/testify/assert"
)

func TestSomething(t *testing.T) {

  assert.Equal(t, 123, 123, "they should be equal")

  assert.NotEqual(t, 123, 456, "they should not be equal")

  assert.Nil(t, object)

  if assert.NotNil(t, object) {
    assert.Equal(t, "Something", object.Value)
  }
}

第一引数がダサい

API追加して
Pull Request

こうなった


import (
  "testing"
  "github.com/stretchr/testify/assert"
)

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

  assert.Equal(123, 123, "they should be equal")

  assert.NotEqual(123, 456, "they should not be equal")

  assert.Nil(object)

  if assert.NotNil(object) {

    assert.Equal("Something", object.Value)
  }
}

各テストメソッドに
アサーションは一つ

あ、ハイ。

テストスイート

使い方


import (
    "testing"
    "github.com/stretchr/testify/assert"
    "github.com/stretchr/testify/suite"
)

type ExampleTestSuite struct {
    suite.Suite
    VariableThatShouldStartAtFive int
}

func (suite *ExampleTestSuite) SetupTest() {
    suite.VariableThatShouldStartAtFive = 5
}

func (suite *ExampleTestSuite) TestExample() {
    assert.Equal(suite.T(), suite.VariableThatShouldStartAtFive, 5)
}

func TestExampleTestSuite(t *testing.T) {
    suite.Run(t, new(ExampleTestSuite))
}

えっ?

assert.Equal(suite.T(), 

suiteからの*testing.Tがダサい

API追加して
Pull Request

こうなった


import (
    "testing"
    "github.com/stretchr/testify/suite"
)

type ExampleTestSuite struct {
    suite.Suite
    VariableThatShouldStartAtFive int
}

func (suite *ExampleTestSuite) SetupTest() {
    suite.VariableThatShouldStartAtFive = 5
}

func (suite *ExampleTestSuite) TestExample() {
    suite.Equal(suite.VariableThatShouldStartAtFive, 5)
}

func TestExampleTestSuite(t *testing.T) {
    suite.Run(t, new(ExampleTestSuite))
}

みんな気に入ったライブラリにはPRしよう!

ご清聴ありがとうございました