私は自分自身のassert
メソッドでtesting.Tをカスタマイズして、私が書いている行数を減らそうとしています。私は次のように試して、エラー:"wrong signature for TestCustom, must be: func TestCustom(t *testing.T)"
で終了しました。テストでカスタム化をテストします。
どうすればTestCustom
を使用できますか?CustomTester
新しい方法のインターフェイスassert
?
私は第三者フレームワークを使用したくありません。
custom_testing.go
type CustomTester struct {
testing.TB
}
func (t *CustomTester) assert(exp interface{}, act interface{}) {
if exp != act {
t.Errorf("expected: %v. got: %v\n", exp, act)
}
}
// I want testing package inject testing.T here
// But, by using my own wrapper: CustomTester struct with,
// my own assert method to get rid of using t as an argument,
// in each assert like: assert(t, exp, act)
func TestCustom(t *testing.TB) {
t.assert(3, len(foo))
}
注:私もこれを試してみました、それは私がテストしていたときに毎回t
渡す必要はありませんが、動作します:
working_not_wanted.go
func assert(t *testing.TB, exp interface{}, act interface{}) {
if exp != act {
t.Errorf("expected: %v. got: %v\n", exp, act)
}
}
func TestCustom(t *testing.T) {
assert(t, 3, len(foo))
}
't'はテストパッケージとやりとりする方法です。あなたは_somehow_の周りを渡す必要があります。 ['testify'](https://github.com/stretchr/testify)のようなパッケージがまったくどのように動作するかを見てきましたか? – JimB
ええ、私は 't'とやりとりしたいのですが、私のラップされた' CustomTester'インターフェースを使って負担を軽減しています。それを今見ようとする。 –
@JimB私は実装したときに受信機で 't'を使いたいと思っています。私は 'testify'を見直しましたが(' t'と対話します)(https://github.com/stretchr/testify/blob/master/assert/assertions.go)、 'assert.New t) 'を使用している場合、最初のパラメータは望ましくありません。私もこれを試して、それはもちろん動作します。 –