[C# 단위테스트] xUnit Collection(컬렉션) 단위 테스트
- C#/단위테스트
- 2021. 12. 5. 19:43
소개
- 오늘은 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
'C# > 단위테스트' 카테고리의 다른 글
[C# 단위테스트] C# .NET Framework xUnit 단위테스트 하는 방법 (0) | 2021.12.18 |
---|---|
[C# 단위테스트] xUnit 파일시스템(IFileSystem) Mock데이터 사용법 (0) | 2021.12.17 |
[C# 단위테스트] 단위테스트 목표 (0) | 2021.11.22 |
[C# 단위테스트] xUnit FlunetAssertions 이용하여 문자형, 불리안 테스트 하기 (0) | 2021.11.21 |
[C# 단위테스트] xUnit FluentAssertions 이용하여 숫자형 테스트 하기 (0) | 2021.11.18 |
이 글을 공유하기