Testify require and assert: Difference between revisions
Jump to navigation
Jump to search
Line 45: | Line 45: | ||
==<tt>Fail()</tt>== | ==<tt>Fail()</tt>== | ||
==<tt>Failf()</tt>== | ==<tt>Failf()</tt>== | ||
==<tt>FailNow()</tt>== | |||
==Failing a Test from a Goroutine== | ==Failing a Test from a Goroutine== | ||
Revision as of 01:08, 12 March 2024
External
Internal
Overview
Equality and Non-Equality
In case the result is failure, Equal()
and NotEqual()
delegate to Fail()
.
package somepkg
import (
"testing"
testifyassert "github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
assert := testifyassert.New(t)
assert.Equal(123, 123, "this message is displayed when the test fails %s", "because of inequality")
assert.NotEqual(123, 321, "this message is displayed when the test fails %s", "because of equality")
}
Nil and Non-Nil
In case the result is failure, Nil()
and NotNil()
delegate to Fail()
.
package somepkg
import (
"testing"
testifyassert "github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
assert := testifyassert.New(t)
someObj := &struct{}{}
assert.NotNil(someObj, "someObj should not have been nil but it is %v", someObj)
someObj = nil
assert.Nil(someObj, "someObj should have been nil but it is %v", someObj)
}
Failing the Test
Fail()
Failf()
FailNow()
Failing a Test from a Goroutine
package yours
import (
"testing"
tassert "github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
assert := tassert.New(t)
// assert equality
assert.Equal(123, 123, "they should be equal")
// assert inequality
assert.NotEqual(123, 456, "they should not be equal")
// assert for nil (good for errors)
assert.Nil(object)
// assert for not nil (good when you expect something)
if assert.NotNil(object) {
// now we know that object isn't nil, we are safe to make
// further assertions without causing any errors
assert.Equal("Something", object.Value)
}
}
To check that an error has the expected message:
err := ...
assert.NotNil(err)
assert.Equal(err.Error(), "expected message")