shad-go/testequal
2020-03-21 03:50:02 +03:00
..
helper_test.go Adding testequal task. 2020-03-21 02:56:58 +03:00
README.md Add note about err msg. 2020-03-21 03:32:54 +03:00
require.go Adding testequal task. 2020-03-21 02:56:58 +03:00
require_test.go Fix string benchmark size; rename benchmarks; add map benchmark. 2020-03-21 03:50:02 +03:00
t.go Adding testequal task. 2020-03-21 02:56:58 +03:00

testequal

В этой задаче нужно реализовать 4 test helper'а, аналогичных функциям из testify:

func AssertEqual(t T, expected, actual interface{}, msgAndArgs ...interface{}) bool
func AssertNotEqual(t T, expected, actual interface{}, msgAndArgs ...interface{})
func RequireEqual(t T, expected, actual interface{}, msgAndArgs ...interface{})
func RequireNotEqual(t T, expected, actual interface{}, msgAndArgs ...interface{})

Функции проверяют на равенство expected и actual и завершают тест, если проверка не прошла. msgAndArgs попадают в описание ошибки через fmt.Sprintf.

Пример использования:

func TestMath(t *testing.T) {
	AssertEqual(t, 1, 2, "1 == 2")
}

вывод теста:

=== RUN   TestMath
--- FAIL: TestMath (0.00s)
    math_test.go:43: not equal:
        expected: 1
        actual  : 2
        message : 1 == 2
FAIL
FAIL    gitlab.com/slon/shad-go/testequal 0.003s
FAIL

В отличие от testify реализация ограничивает набор типов, с которыми умеет работать:

  1. Целые числа: int, in64 и др (см. тесты)
  2. string
  3. map[string]string
  4. []int
  5. []byte

Ссылки

  1. testing.T: https://golang.org/pkg/testing/#T
  2. type assertions: https://golang.org/doc/effective_go.html#interface_conversions