NUnit에 λŒ€ν•˜μ—¬

2025. 3. 8. 15:12Β·πŸ“‚ Computer Science

 

πŸ“Œ NUnitμ΄λž€?

NUnit은 .NET 기반의 λ‹¨μœ„ ν…ŒμŠ€νŠΈ(Unit Test) ν”„λ ˆμž„μ›Œν¬λ‘œ, μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ°œλ³„ κΈ°λŠ₯(λͺ¨λ“ˆ, 클래슀, λ©”μ„œλ“œ λ“±)이 λ…λ¦½μ μœΌλ‘œ μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•˜λŠ” μžλ™ν™” ν…ŒμŠ€νŠΈ 도ꡬ이닀. μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ ν…ŒμŠ€νŠΈλŠ” μ½”λ“œμ˜ μ •ν™•μ„±κ³Ό 신뒰성을 보μž₯ν•˜λŠ” μ€‘μš”ν•œ 과정이며, NUnit은 이λ₯Ό 효율적으둜 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ 도와쀀닀.

 

+ μΆ”κ°€ 지식

.NET ν”„λ ˆμž„μ›Œν¬

 ~> Microsoftμ—μ„œ κ°œλ°œν•œ μ†Œν”„νŠΈμ›¨μ–΄ 개발 ν”Œλž«νΌ

 ~> Windows ν™˜κ²½μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 개발, μ‹€ν–‰, 배포할 수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° ν”„λ ˆμž„μ›Œν¬

 ~> C#, VB.NET λ“± λ‹€μ–‘ν•œ μ–Έμ–΄λ₯Ό μ§€μ›ν•˜λ©°, CLR(Common Language Runtime)을 μ‚¬μš©ν•˜μ—¬ μ½”λ“œ μ‹€ν–‰

CLR(Common Language Runtime)

 ~> .NET ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 핡심 λŸ°νƒ€μž„ ν™˜κ²½

 ~> NET ν”„λ ˆμž„μ›Œν¬μ—μ„œ λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ€ CLR μœ„μ—μ„œ μ‹€ν–‰λ˜λ©°, NUnitκ³Ό 같은 ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬λ„ CLR을 톡해 λ™μž‘

 

πŸ“Œ NUnit μ‚¬μš© 이유

βœ… μ½”λ“œ ν’ˆμ§ˆ μœ μ§€ 및 였λ₯˜ 예방

 ~> μ½”λ“œ λ³€κ²½ μ‹œ μžλ™ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜μ—¬ 문제 λ°œμƒμ„ 사전에 λ°©μ§€

βœ… 개발 속도 ν–₯상 (μžλ™ν™” ν…ŒμŠ€νŠΈ 적용 κ°€λŠ₯)

 ~> 반볡적인 μˆ˜λ™ ν…ŒμŠ€νŠΈ 없이 λΉ λ₯΄κ²Œ 검증 κ°€λŠ₯

βœ… CI/CD ν™˜κ²½κ³Ό 톡합 κ°€λŠ₯

 ~> Jenkins, GitHub Actions 같은 DevOps ν™˜κ²½κ³Ό μ—°λ™ν•˜μ—¬ 배포 전에 μžλ™ ν…ŒμŠ€νŠΈ μˆ˜ν–‰

βœ… TDD(Test-Driven Development) 지원

 ~> λ¨Όμ € ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜κ³ , 이후 μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μœΌλ‘œ 개발 κ°€λŠ₯

βœ… λ‹€μ–‘ν•œ ν…ŒμŠ€νŠΈ μœ ν˜• 지원

 ~> Unit Test, Exception Test, μ„±λŠ₯ ν…ŒμŠ€νŠΈ λ“± λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€ ν…ŒμŠ€νŠΈ κ°€λŠ₯

 

πŸ“Œ NUnit의 νŠΉμ§•

βœ… μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ ˆμž„μ›Œν¬

 ~> 무료둜 μ‚¬μš©ν•  수 있으며, GitHubμ—μ„œ μ†ŒμŠ€ μ½”λ“œ 확인 κ°€λŠ₯

βœ… Annotation 기반 ν…ŒμŠ€νŠΈ 관리

 ~> [Test], [TestCase], [SetUp] 등을 μ‚¬μš©ν•΄ ν…ŒμŠ€νŠΈ μ •μ˜

βœ… μžλ™ν™” ν…ŒμŠ€νŠΈ 지원

  ~> 반볡적인 ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•˜μ—¬ μ½”λ“œ ν’ˆμ§ˆ μœ μ§€ κ°€λŠ₯

βœ… 독립적인 ν…ŒμŠ€νŠΈ μ‹€ν–‰

 ~> νŠΉμ • κΈ°λŠ₯이 λ‹€λ₯Έ λͺ¨λ“ˆμ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  정상 μž‘λ™ν•˜λŠ”μ§€ 확인 κ°€λŠ₯

βœ… λ‹€μ–‘ν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½ 지원

 ~> μ½˜μ†”, GUI, Visual Studio Test Explorerμ—μ„œ μ‹€ν–‰ κ°€λŠ₯

 

πŸ“Œ NUnit λ™μž‘ 방식

1️⃣ SetUp (ν…ŒμŠ€νŠΈ μ€€λΉ„)

 ~> ν…ŒμŠ€νŠΈ μ‹€ν–‰ μ „, ν•„μš”ν•œ λ°μ΄ν„°λ‚˜ ν™˜κ²½μ„ μ€€λΉ„

 ~> [SetUp] Annotation μ‚¬μš©

2️⃣ Test (ν…ŒμŠ€νŠΈ μ‹€ν–‰)

 ~> μ‹€μ œ ν…ŒμŠ€νŠΈ λ©”μ„œλ“œλ₯Ό μ‹€ν–‰

 ~> [Test], [TestCase] 등을 ν™œμš©ν•˜μ—¬ λ‹€μ–‘ν•œ ν…ŒμŠ€νŠΈ μˆ˜ν–‰

3️⃣ Assertion (κ²°κ³Ό 검증)

 ~> Assert.AreEqual(). Assert.IsTrue() 등을 ν™œμš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ κ²°κ³Ό 확인

4️⃣ TearDown (ν…ŒμŠ€νŠΈ μ’…λ£Œ 및 정리)

 ~> ν…ŒμŠ€νŠΈ μ‹€ν–‰ ν›„ λ¦¬μ†ŒμŠ€ ν•΄μ œ λ“±μ˜ 정리 μž‘μ—… μˆ˜ν–‰

 ~> [TearDown] Annotation μ‚¬μš©

 

+ μΆ”κ°€ 지식

Annotation

 ~> μ½”λ“œμ— 좔가적인 정보λ₯Ό μ œκ³΅ν•˜λŠ” 메타데이터

 ~> 즉, μ»΄νŒŒμΌλŸ¬λ‚˜ ν”„λ ˆμž„μ›Œν¬μ—κ²Œ νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ„λ‘ μ§€μ‹œν•˜λŠ” 주석같은 μ—­ν• 

 

πŸ“Œ NUnit μ½”λ“œ 예제

using NUnit.Framework;

[TestFixture] // 이 클래슀λ₯Ό ν…ŒμŠ€νŠΈ 클래슀(Test Suite)둜 μ§€μ •
public class UnitTest 
{
    [Test] // 단일 ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ (λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λ©° ν•˜λ‚˜μ˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§Œ μˆ˜ν–‰)
    public void AddTest() 
    {
        int result = 2 + 3;
        Assert.AreEqual(5, result); // μ˜ˆμƒ κ°’(expected)κ³Ό μ‹€μ œ κ°’(actual) 비ꡐ
    }

    [TestCase(5, 2, 3)] // μ—¬λŸ¬ 개의 μž…λ ₯값을 ν™œμš©ν•˜μ—¬ 같은 ν…ŒμŠ€νŠΈλ₯Ό 반볡 μ‹€ν–‰
    [TestCase(7, 5, 2)]
    [TestCase(8, 7, 1)]
    public void SubtractTest(int a, int b, int expected) 
    {
        int result = a - b;
        Assert.AreEqual(expected, result); // μ˜ˆμƒ κ°’κ³Ό κ²°κ³Ό 비ꡐ
    }
}

 

'πŸ“‚ Computer Science' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

MCP(Model Context Protocol)λž€?  (4) 2025.04.11
Interpreter, Compiler에 λŒ€ν•˜μ—¬  (0) 2025.03.12
Rendering에 λŒ€ν•˜μ—¬  (0) 2025.03.07
Node.js에 λŒ€ν•˜μ—¬  (0) 2025.03.05
Database에 λŒ€ν•˜μ—¬  (0) 2025.02.21
'πŸ“‚ Computer Science' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • MCP(Model Context Protocol)λž€?
  • Interpreter, Compiler에 λŒ€ν•˜μ—¬
  • Rendering에 λŒ€ν•˜μ—¬
  • Node.js에 λŒ€ν•˜μ—¬
YeonSu02
YeonSu02
Email : rkddustn2519@naver.com
  • YeonSu02
    IsLiife2
    YeonSu02
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기
      • πŸ“‚ Computer Science
      • πŸ“‚ Unity Engine Study
        • πŸ“„ Unity μΈν”„λŸ° κ°•μ˜
        • πŸ“„ Unity 유튜브 κ°•μ˜
        • πŸ“„ Unity μ°Έκ³ 
        • πŸ’» Game Development
      • πŸ“‚ Quality Assurance Study
        • πŸ”₯ μ—˜λ¦¬μŠ€ SW QAνŠΈλž™
        • πŸ“„ QA 곡뢀
        • πŸ“š QA μ±… 리뷰
      • πŸ“‚ Program Language Study
        • πŸ“„ C# 곡뢀
        • πŸ“„ 파이썬 곡뢀
        • πŸ“„ JavaScript 곡뢀
        • πŸ“„ TypeScript 곡뢀
      • πŸ“‚ Additional Study
        • πŸ“„ Git
        • πŸ“„ Docker
        • πŸ“„ Jenkins
        • πŸ“„ Firebase
        • πŸ“„ License
      • πŸ“‚ Experience
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    qa μ±…
    μ»΄ν“¨ν„°ν™œμš©λŠ₯λ ₯
    κ΅­λΉ„λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    μ—‘μ…€
    qa λΆ€νŠΈμΊ ν”„
    μ •μ²˜κΈ° μ‹€κΈ°
    μ»΄ν™œ
    qa μ±… 리뷰
    μ—˜λ¦¬μŠ€νŠΈλž™
    자격증
    qa자격증
    μ •μ²˜κΈ° 독학
    istqb-ctfl
    μ •μ²˜κΈ° ν•„κΈ°
    qa 직무 ꡐ윑
    qa κ°•μ˜
    λΆ€νŠΈμΊ ν”„ μΆ”μ²œ
    ν…ŒμŠ€νŒ…μžκ²©μ¦
    QA
    μ—˜λ¦¬μŠ€νŠΈλž™ ν›„κΈ°
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
YeonSu02
NUnit에 λŒ€ν•˜μ—¬
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”