π 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 |