[C# 단위테스트] xUnit Collection(컬렉션) 단위 테스트

소개

  • 오늘은 xUnit에서 FluentAssertions 이용하여 Collection(컬렉션) 을 단위테스트 하는 방법에 대해서 알려 드리려고 합니다.
  • C#에서 xUnit 테스트 진행하는 방법 및 FluentAssertion 사용 방법은 아래 참조에서 URL에 들어가셔서 구축하시면 됩니다.


참조



1. 테스트 기본이 되는 코드 작성

  • 단위테스트를 진행하기 위해서는 단위테스트를 진행할 기본 클래스 및 메서드가 있어야 합니다.
  • 이해하기 쉽게, Calculate 클래스를 선언하고 Add 메서드를 작성하여 테스트 진행하도록 하였습니다.
using System;
using System.Collections.Generic;

namespace xUnitProgram
{
    public class Calculate
    {
        public List<int> GenerateNumbers()
        {
            List<int> list = new List<int>()
            {
                1, 2, 5 ,8
            };

            return list;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {

        }
    }
}


2. 단위테스트 진행할 테스트 코드 작성하기

  • 앞서 단위테스트 진행할 기본 베이스 코드를 작성하였습니다.
  • 이제 xUnit 테스트 프로젝트를 생성 후, Collection 타입의 메서드를 단위테스트 진행해 보도록 하겠습니다.
  • 참고로 단위테스트 대상이 되는 메서드는 반드시 public 형식이어야 합니다.
using FluentAssertions;
using System.Collections.Generic;
using Xunit;
using xUnitProgram;

namespace Number_Test
{
    public class UnitTest1
    {
        [Fact]
        public void Should_Assert_Collection()
        {
            // Arrang
            Calculate calc = new Calculate();

            // Act
            IEnumerable<int> result = calc.GenerateNumbers();

            // Assertion

            // Null 확인
            result.Should().NotBeNull();
            // result.Should().BeNull();

            // == 확인
            result.Should().Equal(new List<int> { 1, 2, 5, 8 });
            result.Should().Equal(1, 2, 5, 8);
            result.Should().BeEquivalentTo(new List<int> { 8, 5, 1, 2 });

            // Count 확인
            result.Should().HaveCount(cnt => cnt > 3).And.OnlyHaveUniqueItems();
            result.Should().HaveSameCount(new[] { 6, 2, 0, 1 });

            // 시작/끝 값 확인
            result.Should().StartWith(1);
            result.Should().EndWith(8);

            // 포함 유/무 확인
            result.Should().Contain(x => x > 3);

            result.Should().NotContain(82);
            result.Should().NotContainNulls();
            result.Should().NotContain(x => x > 10);

            result.Should().ContainInOrder(new[] { 1, 5, 8 });

            result.Should().OnlyContain(x => x < 10);

            result.Should().BeSubsetOf(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, });

            // 타입 확인
            result.Should().ContainItemsAssignableTo<int>();

            // 응용
            result.Should().Contain(8)
                .And.HaveElementAt(2, 5)
                .And.NotBeSubsetOf(new[] { 11, 56 });

            result.Should().NotBeEmpty()
                .And.HaveCount(4)
                .And.ContainInOrder(new[] { 2, 5 })
                .And.ContainItemsAssignableTo<int>();
        }
    }
}


3. 실행 결과

  • 단위테스트 진행 결과, 정상적으로 테스트를 통과한 것을 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY