>  기사  >  백엔드 개발  >  Golang의 테스트 중심 개발 실무 경험

Golang의 테스트 중심 개발 실무 경험

WBOY
WBOY원래의
2023-08-07 10:53:101302검색

Golang의 테스트 중심 개발 실무 경험

개요:
테스트 중심 개발(TDD)은 일반적인 소프트웨어 개발 방법입니다. 실제 코드를 작성하기 전에 기능을 확인하는 테스트 코드 작성을 강조합니다. 테스트 코드를 작성함으로써 개발자는 요구 사항을 더 잘 이해하고 인터페이스를 정확하게 정의하며 코드 품질과 유지 관리성을 향상시킬 수 있습니다. 이 글에서는 실제 프로젝트에서 TDD 개발을 활용하는 방법을 소개하기 위해 Golang 언어를 예로 들어보겠습니다.

  1. 환경 설정 및 종속성 관리
    먼저 TDD를 시작하기 전에 Golang 개발 환경을 준비해야 합니다. Golang이 설치되어 있고 GOROOT 및 GOPATH 환경 변수가 설정되어 있는지 확인하세요.

Golang에는 선택할 수 있는 종속성 관리 도구가 많이 있습니다. 일반적인 것에는 go mod, dep 등이 포함됩니다. go mod를 예로 들어 다음 명령을 사용하여 프로젝트를 초기화합니다.

go mod init <项目名>
  1. 테스트 파일 만들기
    TDD를 수행하려면 각 함수에 해당하는 테스트 코드가 있어야 합니다. Golang에서는 테스트 파일 앞에 _test.go가 붙고 함수 이름 앞에 Test가 추가됩니다. _test.go为后缀,并且在函数名前加上Test

以一个简单的计算器为例,我们可以创建一个calculator_test.go的文件,并编写测试代码:

package main

import (
    "testing"
)

func TestAdd(t *testing.T) {
    c := add(2, 3)
    if c != 5 {
        t.Error("Expected 5, got ", c)
    }
}

func TestSubtract(t *testing.T) {
    c := subtract(5, 2)
    if c != 3 {
        t.Error("Expected 3, got ", c)
    }
}
  1. 编写功能代码
    测试代码编写完成后,我们需要编写功能代码来满足测试的需求。在本例中,我们可以在calculator.go文件中编写功能代码:
package main

func add(a, b int) int {
    return a + b
}

func subtract(a, b int) int {
    return a - b
}
  1. 运行测试
    测试代码和功能代码编写完成后,我们可以运行测试代码来验证功能的正确性。在项目根目录下,运行以下命令:
go test

如果输出结果中没有出现错误,那么说明测试通过。

  1. 迭代开发
    TDD的核心思想是迭代开发。在已经通过的测试代码基础上,我们可以添加更多的测试来覆盖更多的场景。然后,根据这些测试来修改和完善功能代码。

例如,我们可以添加一个测试来测试乘法运算:

func TestMultiply(t *testing.T) {
    c := multiply(4, 3)
    if c != 12 {
        t.Error("Expected 12, got ", c)
    }
}

然后,在功能代码中添加乘法函数:

func multiply(a, b int) int {
    return a * b
}

再次运行go test

    간단한 계산기를 예로 들어 calculator_test.go 파일을 만들고 테스트 코드를 작성할 수 있습니다.
  1. func TestDivideByZero(t *testing.T) {
        defer func() {
            if r := recover(); r != nil {
                if r != "divide by zero" {
                    t.Error("Expected 'divide by zero' error")
                }
            } else {
                t.Error("Expected 'divide by zero' error")
            }
        }()
        divide(5, 0)
    }

      Write function code
  2. Test After 코드가 작성되면 테스트 요구 사항을 충족하는 기능적 코드를 작성해야 합니다. 이 경우 calculator.go 파일에 함수 코드를 작성할 수 있습니다.

func divide(a, b int) int {
    if b == 0 {
        panic("divide by zero")
    }
    return a / b
}

    테스트 실행

    테스트 코드와 함수 코드가 작성된 후, 테스트 코드를 실행하여 기능을 확인할 수 있습니다. 프로젝트 루트 디렉터리에서 다음 명령을 실행합니다.

    rrreee

    출력에 오류가 없으면 테스트가 통과됩니다.


      반복 개발TDD의 핵심 아이디어는 반복 개발입니다. 이미 통과된 테스트 코드를 기반으로 더 많은 테스트를 추가하여 더 많은 시나리오를 다룰 수 있습니다. 그런 다음 이러한 테스트를 기반으로 기능 코드를 수정하고 개선합니다.

      예를 들어, 곱셈 연산을 테스트하기 위해 테스트를 추가할 수 있습니다:

      rrreee🎜그런 다음 함수 코드에 곱셈 함수를 추가합니다: 🎜rrreee🎜 go test 명령을 다시 실행하세요. 테스트를 통과하면 반복적인 개발이 제대로 이루어졌다는 의미입니다. 🎜🎜🎜비정상 상황 처리🎜실제 개발에서는 다양한 비정상 상황을 고려하고 그에 맞는 테스트 코드를 작성해야 합니다. 🎜🎜🎜예를 들어 계산기에서는 제수가 0인 경우를 고려해야 합니다. 다음과 같은 테스트를 추가할 수 있습니다: 🎜rrreee🎜 그런 다음 함수 코드에 나누기 기능을 추가합니다: 🎜rrreee🎜 테스트를 실행하면 합격 테스트 결과를 얻을 수 있습니다. 🎜🎜요약: 🎜TDD 개발을 통해 코드 품질과 유지 관리성을 향상시킬 수 있습니다. Golang에서는 테스트 코드를 작성함으로써 요구 사항을 더 잘 이해하고 인터페이스를 정확하게 정의하며 코드의 정확성을 보장할 수 있습니다. 🎜🎜TDD는 개발 시간과 작업량을 늘리지만 나중에 디버깅 및 유지 관리 시간을 줄이고 개발 효율성과 코드 품질을 향상시킬 수 있습니다. 따라서 TDD는 실제 프로젝트, 특히 복잡한 논리와 빈번한 요구 사항 변경이 포함된 프로젝트에서 매우 중요합니다. 🎜🎜이 글의 소개를 통해 독자들이 Golang의 테스트 중심 개발의 실제 경험을 더 잘 이해하고 적용할 수 있기를 바랍니다. 고품질의 코드를 함께 만들어 보세요! 🎜

위 내용은 Golang의 테스트 중심 개발 실무 경험의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.