В последней статье были представлены табличный метод тестирования и структура тестирования gomock, что значительно повысило эффективность и качество тестирования. В этой статье будет представлено введение утверждений в тестирование для дальнейшего повышения эффективности и качества тестирования.
Зачем вам нужна библиотека утверждений
Давайте сначала разберемся, почему в стандартном пакете Go нет утверждений, официальный ответ на этот вопрос есть в FAQ.
Общий смысл таков: «Go не предоставляет утверждений, которые, как мы знаем, будут доставлять неудобства, и его основная цель — уберечь вас, программистов, от лени в обработке ошибок. Мы знаем, что это спорный момент, но мы чувствуем это. Очень круто~~." Итак, причина, по которой мы представили библиотеку утверждений, также очевидна:быть ленивым, введение утверждений может обеспечить нам удобство — повысить эффективность тестирования и улучшить читаемость кода.
testify
С точки зрения выбора библиотеки утверждений у нас, кажется, не так уж много вариантов, С точки зрения количества запусков и активности, это в основномtestify
Выдающийся.
Нет никакого сравнения с отсутствием вреда, взгляните на использованиеtestify
Перед методами тестирования:
func TestSomeFun(t *testing.T){
...
if v != want {
t.Fatalf("v值错误,期望值:%s,实际值:%s", want, v)
}
if err != nil {
t.Fatalf("非预期的错误:%s", err)
}
if objectA != objectB {
if objectA.field1 != objectB.field1 {
// t.Fatalf() field1值错误...bla bla bla
}
if objectA.field2 != objectB.field2 {
// t.Fatalf() field2值错误...bla bla bla
}
// 遍历object所有值... bla bla bla
}
...
}
Код залилif...else..
Суждение, сборка больших кусков информации об ошибках (настоящая физическая работа...), если вам не повезло, вам нужно пройтись по структуре, чтобы судить об этом - не интуитивно, неэффективно и действительно не модно.
Теперь мы используемtestify
Давайте изменим приведенный выше тестовый пример:
func TestSomeFun(t *testing.T){
a := assert.New(t)
...
a.Equal(v, want)
a.Nil(err,"如果你还是想输出自己拼装的错误信息,可以传第三个参数")
a.Equal(objectA, objectB)
...
}
Сделано три строчки, и смысл теста понятен с первого взгляда - интуитивно, эффективно, коротко, модно.
в заключении
Testify прост в использовании и имеет значительные улучшения, его можно описать как ленивый артефакт, в который вы влюбитесь, как только начнете им пользоваться. Объединив табличное тестирование, gomock и testify, мы смогли написать элегантный и красивый код модульного тестирования. Однако недостаточно элегантно протестировать код, нам также нужна помощь.main.go
Оденься тоже. В следующей и последней статье этой серии мы представим инфраструктуру внедрения зависимостей проводов, которая помогаетmain.go
Похудение.