본문 바로가기
Azure

.NET 6 API with Azure Pipeline] 3. Trigger, Unit Test Task

by Fastlane 2022. 5. 27.
728x90
반응형

출처 : https://dotnetplaybook.com/build-test-and-deploy-a-rest-api-with-azure-devops/

Trigger

Pipeline은 트리거를 사용하여, 자동으로 실행된다.

GitHub CI 트리거란?

CI(연속통합) 트리거는 지정된 branch에 push하면 파이프라인이 실행된다. 

azire-pipelines.yml파일을 보면 아래와 같이 main branch에 trigger가 세팅된 것을 확인할 수 있다. 

trigger:
- main

그러면 소스를 수정해서 push를 해보고 pipeline이 실행되는지 확인해보자. 

파일을 수정하고 push를 한 다음, pipeline을 확인해보면 아래와 같이 실행된 것을 확인할 수 있다. 

 

Task

yaml파일을 수정해서, unit test 진행 후 production으로 배포될 수 있도록 수정해보자. 

azire-pipelines.yml

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- main

pool:
  vmImage: ubuntu-latest

variables:
  buildConfiguration: 'Release'

steps:

- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Test/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'

파일 저장 후, git push origin main을 하고 pipeline 실행리스트를 확인해보자. 

Jobs을 확인해보면, DotNetCoreCLI가 추가된 것을 확인할 수 있고, log화면에서 test가 진행된 것도 확인할 수 있다. 

이제 Unit Test가 Fail하도록 수정하고 Pipeline을 Run해보자. 

using Xunit;
using SimpleAPI.Controllers;
using System.Collections.Generic;

namespace SimpleAPI.Test;

public class UnitTest1
{

    WeatherForecastController controller = new WeatherForecastController();

    [Fact]
    public void GetReturnsMyName()
    {
        var returnValue = controller.Get();

        
        int result = 0;
        using (IEnumerator<WeatherForecast> enumerator = returnValue.GetEnumerator())
        {
            while (enumerator.MoveNext())
                result++;
        }
        

        //Assert.Equal(5, result);
        Assert.Equal(2, result);
    }
    
}

Assert.Equal(5, result);를 주석처리하고, 2로 변경하였다. 

PS C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test> dotnet test
  복원할 프로젝트를 확인하는 중...
Microsoft (R) Test Execution Command Line Tool Version 17.1.0
Copyright (c) Microsoft Corporation. All rights reserved.
테스트 실행을 시작하는 중입니다. 잠시 기다려 주세요...
지정된 패턴과 일치한 총 테스트 파일 수는 1개입니다.
[xUnit.net 00:00:03.40]     SimpleAPI.Test.UnitTest1.GetReturnsMyName [FAIL]
  실패 SimpleAPI.Test.UnitTest1.GetReturnsMyName [15 ms]
  오류 메시지:
   Assert.Equal() Failure
Expected: 2
Actual:   5
  스택 추적:
     at SimpleAPI.Test.UnitTest1.GetReturnsMyName() in C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test\UnitTest1.cs:line 27

실패!  - 실패:     1, 통과:     0, 건너뜀:     0, 전체:     1, 기간: < 1 ms - SimpleAPI.Test.dll (net6.0)

test를 실행하면, 위와 같이 실패처리된다. 

해당 소스를 git push한다음 pipeline CI 결과를 확인해보자. 

 

Job이 Fail된 것을 확인할 수 있다. 

728x90
반응형

댓글