[rust] 러스트 코드의 테스트 자동화

러스트는 테스트 주도 개발 및 소프트웨어 품질을 유지하기 위한 다양한 도구를 제공합니다. 이 문서에서는 러스트 코드의 테스트 자동화에 대해 알아보겠습니다.

1. 테스트 구조

러스트에서의 테스트는 보통 tests 모듈을 사용하여 구성됩니다. 테스트 모듈은 각 함수 또는 기능에 대한 단위 및 통합 테스트를 포함합니다.

mod tests {
    #[test]
    fn test_addition() {
        assert_eq!(2 + 2, 4);
    }

    #[test]
    fn test_subtraction() {
        assert_eq!(5 - 3, 2);
    }
}

2. 테스트 실행

러스트에서는 cargo test 명령어를 사용하여 테스트를 자동으로 실행할 수 있습니다. 이 명령어는 프로젝트의 모든 테스트를 실행하고 결과를 보고합니다.

$ cargo test

3. 테스트 커버리지

러스트는 코드의 테스트 커버리지를 확인하는 tarpaulin과 같은 도구를 제공합니다. tarpaulin은 코드에서 어떤 부분을 테스트해야 하는지를 확인하고 커버리지 보고서를 생성해줍니다.

$ cargo tarpaulin --out Xml

4. GitHub Actions에서의 테스트 자동화

GitHub Actions를 사용하여 푸시나 풀 리퀘스트 이벤트가 발생할 때 러스트 코드를 자동으로 빌드하고 테스트할 수 있습니다. 다음은 .github/workflows/rust.yml 파일의 예시입니다.

name: Rust CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Rust
      uses: actions/setup-rust@v1
      with:
        profile: minimal
    - name: Test
      run: cargo test

이러한 방법을 사용하면 GitHub 저장소에서 변경 사항이 발생할 때마다 러스트 코드를 자동으로 빌드하고 테스트할 수 있습니다.

러스트의 여러 도구와 GitHub Actions를 통해 효율적으로 테스트 자동화를 수행할 수 있습니다. 러스트 코드의 신뢰성과 안정성을 높이기 위해 테스트 자동화를 적극적으로 활용하는 것이 좋습니다.

참고 자료