NUnit에서 자체 제작 클래스의 단원 테스트를 진행합니다
단원 쓰기 테스트를 통해 머릿속으로 규격을 정리하면서 가장 짧은 거리에 안심하고 설치·유지보수한다.
비망록도 필기를 겸하다.
속성 및 AssertEqual()로 테스트 방법을 기억하면 테스트를 쓸 수 있을 것 같네요.
내가 좋아하는 SharpDevelop4.0에서는 [TestCase] 속성이 트리에 나타나지 않기 때문에 NUnit-Gui를 사용합니다.
개요
테스트 객체의 프로젝트 이름은 여기서 "RenameAlignDigit"입니다.
단원 테스트용 프로젝트'~Test'제작
RenameAlignDigitTest에 추가된 참조
Public이 아닌 방법을 테스트하려면 다음과 같은 설정이 필요하다
테스트할 방법에 대한 테스트 방법을 적으세요.
NUnit-Gui로부터 테스트 수행
1. NUnit 설치
나는 별다른 점이 없다고 생각해서 생략했다.
그나저나'win NUnit-2.6.1ms'를 설치했다.
NUnit - Download에서 다운로드
테스트 대상의 항목은 이것이다.
ClassMyCompare.cs
using System;
namespace Rohinomiya
{
public class MyCompare
{
public MyCompare()
{
}
/// <summary>
/// 数値 current がlower ~ higher の範囲内か?
/// </summary>
/// <param name="lower">区間(開始)</param>
/// <param name="current">比較される値</param>
/// <param name="higher">区間(終了)</param>
/// <param name="inclusive">閉区間か?(境界値を含む) (初期値:true)</param>
/// <returns>範囲内であればtrue</returns>
public static bool Between(int lower, int current, int higher, bool inclusive = true)
{
if(lower > higher) Swap(ref lower,ref higher);
return inclusive ?
(lower <= current && current <= higher) :
(lower < current && current < higher);
}
/// <summary>
/// 2つの値を交換する
/// </summary>
/// <param name="a">値A</param>
/// <param name="b">値B</param>
public static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
}
}
이 새 단원 테스트용 항목을 만듭니다.새 프로젝트 -> 라이브러리 선택 -> 프로젝트 이름 = RenameAlignDigitTest
3. 2.참조 추가
프로젝트 "RenameAlignDigitTest"에 다음 참조를 추가합니다.
nunit.framework.dll(NUnit DLL)
참조 추가 ->NET 어셈블리 탐색기 -> 참조 -> nuit.framework.dll 지정(C:\Program Files\NUnit...\bin\ramework\nunit.frame work.dll)
RenameAlignDigit(테스트 객체 항목)
참조 추가 -> 엔지니어링 -> RenameAlignDigit
4. InternalVisibleTo 구성 요소 속성 증가
Public이 아닌 방법을 테스트하려면 다음과 같은 설정이 필요합니다.
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("RenameAlignDigitTest")]
Rename Align Digit Test라면 보여줄 수 있어요.5. 테스트 방법 쓰기
using System;
using NUnit.Framework;
namespace Rohinomiya
{
[TestFixture]
public class MyCompareTest
{
// [Test]
// public void SwapTest()
// {
// int a = 3;
// int b = 5;
//
// MyCompare.Swap(ref a,ref b);
// Assert.AreEqual(5,a);
// Assert.AreEqual(3,b);
//
// a = -1;
// b = 0;
//
// MyCompare.Swap(ref a,ref b);
// Assert.AreEqual(0,a);
// Assert.AreEqual(-1,b);
// }
[TestCase(3,5,5,3)]
[TestCase(-1,0,0,-1)]
public void SwapTest(int expectedA, int expectedB, int a, int b)
{
MyCompare.Swap(ref a,ref b);
Assert.AreEqual(expectedA,a);
Assert.AreEqual(expectedB,b);
}
// [Test]
// public void BetweenTest()
// {
// Assert.AreEqual(true,MyCompare.Between(1,2,3));
// Assert.AreEqual(true,MyCompare.Between(1,3,3));
// Assert.AreEqual(true,MyCompare.Between(1,1,3));
//
// Assert.AreEqual(false,MyCompare.Between(1,1,3,false));
// Assert.AreEqual(false,MyCompare.Between(1,3,3,false));
// Assert.AreEqual(true,MyCompare.Between(1,2,3,false));
//
// Assert.AreEqual(true,MyCompare.Between(3,2,1));
// Assert.AreEqual(true,MyCompare.Between(3,3,1));
// Assert.AreEqual(true,MyCompare.Between(3,1,1));
//
// Assert.AreEqual(false,MyCompare.Between(3,1,1,false));
// Assert.AreEqual(false,MyCompare.Between(3,3,1,false));
// Assert.AreEqual(true,MyCompare.Between(3,2,1,false));
// }
[TestCase(true,1,2,3,true)]
[TestCase(true,1,3,3,true)]
[TestCase(true,1,1,3,true)]
[TestCase(false,1,1,3,false)]
[TestCase(false,1,3,3,false)]
[TestCase(true,1,2,3,false)]
[TestCase(true,3,2,1,true)]
[TestCase(true,3,3,1,true)]
[TestCase(true,3,1,1,true)]
[TestCase(false,3,1,1,false)]
[TestCase(false,3,3,1,false)]
[TestCase(true,3,2,1,false)]
public void BetweenTest(bool expected, int lower, int current, int higher, bool inclusive = true)
{
bool result = MyCompare.Between(lower, current, higher, inclusive);
Assert.AreEqual(expected, result);
}
}
}
TestCase에서 기본 매개변수를 사용할 수 없습니까?진행이 잘 안 돼서 그걸 썼어요.프로젝트의 최종 이미지
결국 이렇게 될 것 같은 느낌.
6. NUnit-Gui에서 테스트 시작
(미리 건물을 통과해 주십시오)
참고 자료
Reference
이 문제에 관하여(NUnit에서 자체 제작 클래스의 단원 테스트를 진행합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rohinomiya/items/47f09523f1b9dfa015b1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)