Ответ
Unit-тесты - проверяют отдельные функции/методы. Пример:
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("Expected 5, got %d", result)
}
}
Интеграционные тесты - проверяют взаимодействие компонентов (например, с БД). Пример:
func TestUserRepo_Create(t *testing.T) {
db := setupTestDB()
repo := NewUserRepo(db)
err := repo.Create(User{Name: "Test"})
if err != nil {
t.Fatal(err)
}
}
E2E-тесты - проверяют полный workflow системы через API. Используют инструменты вроде Postman или код:
func TestAPI_CreateUser(t *testing.T) {
req := httptest.NewRequest("POST", "/users", strings.NewReader(`{"name":"Test"}`))
w := httptest.NewRecorder()
router.ServeHTTP(w, req)
if w.Code != http.StatusCreated {
t.Errorf("Expected 201, got %d", w.Code)
}
}
Также бывают нагрузочные тесты (JMeter, k6), тесты безопасности (OWASP ZAP), smoke-тесты.