Asp.Net의 단위 테스트: 전체 튜토리얼
⚡ 스마트 요약
Visual Studio에서 ASP.NET 애플리케이션의 단위 테스트를 시작하려면 단위 테스트 프로젝트를 생성하고, 대상 프로젝트에 대한 참조를 연결하고, MSTest [TestClass] 및 [TestMethod] 특성을 추가하고, Assert 메서드를 호출하여 클래스가 설계대로 동작하는지 확인합니다.
테스트는 모든 프로그래밍 언어의 필수적인 측면입니다. 지원 Visual Studio를 사용하면 ASP.NET 애플리케이션 개발이 가능합니다.
Visual Studio는 테스트 코드를 작성하고 ASP.NET 애플리케이션의 테스트 코드를 실행하는 데 사용됩니다. 이를 통해 ASP.NET 애플리케이션의 오류를 쉽게 확인할 수 있습니다. Visual Studio에는 테스트 모듈이 기본적으로 제공되므로 ASP.NET 프로젝트에 대한 테스트를 바로 수행할 수 있습니다.
ASP.NET 테스트 소개
ASP.NET 프로젝트 테스트의 첫 번째 단계는 단위 테스트입니다. 이 테스트는 애플리케이션의 기능을 검증하는 것입니다. 테스트는 애플리케이션이 예상대로 작동하는지 확인하기 위해 수행됩니다. ASP.NET에서 가장 먼저 해야 할 일은 Visual Studio에서 테스트 프로젝트를 생성하는 것입니다. 테스트 프로젝트에는 애플리케이션 테스트에 필요한 코드가 포함됩니다.
아래 웹페이지를 살펴보겠습니다. 이 페이지에는 다음과 같은 메시지가 있습니다.Guru"99 – ASP.NET"이라는 메시지가 표시됩니다. 이제 ASP.NET 프로젝트 실행 시 올바른 메시지가 표시되는지 어떻게 확인할 수 있을까요? 웹 기반 애플리케이션 개발에 사용되는 ASP.NET 솔루션에 테스트 프로젝트를 추가하면 됩니다. 이 테스트 프로젝트를 통해 사용자에게 올바른 메시지가 표시되는지 확인할 수 있습니다.
이제 좀 더 자세히 살펴보고 ASP.NET에서 테스트를 어떻게 진행할 수 있는지 알아보겠습니다.
.NET 단위 테스트 프로젝트 만들기
테스트 프로젝트를 만들기 전에 아래의 상위 수준 단계를 수행해야 합니다.
- 이전 섹션에서 사용한 'DemoApplication'을 사용하세요. 이것이 테스트가 필요한 애플리케이션이 될 것입니다.
- 데모 애플리케이션에 새 클래스를 추가하겠습니다. 이 클래스에는 '라는 이름의 문자열이 포함될 것입니다.Guru'99 – ASP.NET.' 이 문자열은 저희 테스트 프로젝트에서 테스트될 것입니다.
- 마지막으로 테스트 프로젝트를 생성하겠습니다. 이 프로젝트는 ASP.NET 애플리케이션을 테스트하는 데 사용됩니다.
그럼 위에서 설명한 개략적인 단계를 따라 테스트를 구현하는 방법을 살펴보겠습니다.
단계 1) Visual Studio에서 DemoApplication이 열려 있는지 확인하세요.
단계 2) 이제 DemoApplication에 새 클래스를 추가해 보겠습니다. 이 클래스에는 '라는 이름의 문자열이 포함될 것입니다.Guru'99 – ASP.NET.' 이 문자열은 저희 테스트 프로젝트에서 테스트될 것입니다.
새 클래스를 추가하려면 아래 단계를 따르세요.
- Visual Studio의 솔루션 탐색기에서 'DemoApplication'을 마우스 오른쪽 버튼으로 클릭합니다.
- 상황에 맞는 메뉴에서 추가->클래스 옵션을 선택합니다.
단계 3) 이 단계에서,
- 새 클래스의 이름을 'Tutorial.cs'로 지정합니다.
- DemoApplication에 파일을 추가하려면 '추가' 버튼을 클릭하세요.
이제 “DemoApplication” 파일에 새 클래스가 추가되었습니다.
단계 4) “DemoApplication” 폴더에서 새로 생성된 Tutorial.cs 파일을 엽니다. 문자열을 추가합니다.Guru99 – ASP.NET.”
파일을 열려면 솔루션 탐색기에서 Tutorial.cs 파일을 두 번 클릭합니다.
파일에는 이미 작성된 일부 기본 코드가 있습니다. 해당 코드에 대해 신경쓰지 말고 아래 코드 줄을 추가하기만 하면 됩니다.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code 설명:-
- Name 변수는 문자열 유형입니다.
- 마지막으로 Tutorial 클래스의 생성자에서 Name 변수에 값을 할당합니다. 값은 "로 할당됩니다.Guru99 – ASP.NET”
단계 5) 이제 demo.aspx 파일로 이동하여 " 텍스트를 표시하는 코드 줄을 추가하세요.Guru99 – ASP.NET.”
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code 설명:-
- 첫 번째 줄은 'Tutorial' 클래스의 객체를 생성합니다. 이는 클래스와 객체를 다룰 때의 첫 번째 단계입니다. 객체에는 'tp'라는 이름이 지정됩니다.
- 마지막으로 데모.aspx 파일에서 'tutorial.cs'를 호출합니다. Name 변수의 값을 표시합니다.
위 프로그램을 Visual Studio에서 실행하면 다음과 같은 출력이 표시됩니다.
산출:-
출력 결과에서 다음과 같은 메시지를 확인할 수 있습니다.Guru99 – ASP.NET”이 표시되었습니다.
단계 6) 이제 데모 애플리케이션에 테스트 프로젝트를 추가해 보겠습니다. 이 작업은 Visual Studio를 사용하여 수행합니다.
- 솔루션 – DemoApplication을 마우스 오른쪽 버튼으로 클릭합니다.
- 상황에 맞는 메뉴에서 '새 프로젝트' 옵션을 선택합니다.
단계 7) 이 단계에는 데모 애플리케이션에 단위 테스트 프로젝트를 추가하는 작업이 포함됩니다.
- 왼쪽 패널에서 항목 유형을 '테스트'로 클릭합니다.
- 대화 상자의 중앙에 나타나는 목록에서 '단위 테스트 프로젝트'로 항목을 선택합니다.
- 테스트 프로젝트의 이름을 지정하십시오. 우리의 경우 주어진 이름은 'DemoTest'입니다.
- 마지막으로 '확인' 버튼을 클릭하세요.
결국에는 솔루션 탐색기에 DemoTest 프로젝트가 추가된 것을 볼 수 있습니다. 이를 통해 UnitTest1.cs, 속성 등과 같은 다른 파일이 기본적으로 생성되는 것을 볼 수도 있습니다.
테스트 프로젝트 실행
이전 섹션에서 생성한 테스트 프로젝트는 ASP.NET 애플리케이션을 테스트하는 데 사용됩니다. 다음 단계에서는 테스트 프로젝트를 실행하는 방법을 살펴보겠습니다.
- 첫 번째 단계는 ASP.NET 프로젝트에 대한 참조를 추가하는 것입니다. 이 단계는 테스트 프로젝트가 ASP.NET 프로젝트에 접근할 수 있도록 하기 위해 수행됩니다.
- 그런 다음 테스트 코드를 작성하겠습니다.
- 마지막으로 Visual Studio를 사용하여 테스트를 실행해 보겠습니다.
단계 1) 데모 애플리케이션을 테스트하려면 먼저 테스트 프로젝트에서 데모 애플리케이션을 참조해야 합니다. Demo.aspx 솔루션에 대한 참조를 추가합니다.
- 데모 테스트 프로젝트를 마우스 오른쪽 버튼으로 클릭하세요.
- 메뉴에서 추가->참조 옵션을 선택합니다.
단계 2) 다음 단계는 DemoApplication에 대한 참조를 추가하는 것입니다.
- 대화 상자의 왼쪽에서 프로젝트 옵션을 선택하세요
- DemoApplication 옆에 있는 확인란을 클릭하세요.
- '확인' 버튼을 클릭하세요.
이를 통해 데모 테스트 프로젝트에서 DemoApplication을 테스트할 수 있습니다.
단계 3) 이제 테스트 프로젝트에 테스트 코드를 추가할 차례입니다.
- 먼저 솔루션 탐색기에서 UnitTest1 파일을 두 번 클릭합니다.(UnitTest1 파일은 테스트 프로젝트가 생성될 때 Visual Studio에서 자동으로 추가됩니다.)
- 이 파일은 ASP.NET 프로젝트를 테스트하기 위해 실행될 파일입니다.
Visual Studio에서 UnitTest1.cs 파일에 추가한 아래 코드를 볼 수 있습니다. 이는 테스트 프로젝트를 실행하는 데 필요한 기본 코드입니다.
단계 4) 다음 단계는 문자열 "을 테스트하는 데 사용되는 코드를 추가하는 것입니다.Guru99 – ASP.NET.”
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Tutorial 유형의 'tp'라는 새 개체를 만듭니다.
- Assert.AreEqual 메서드는 .NET에서 값이 어떤 값과 같은지 테스트하는 데 사용됩니다. 따라서 이 경우 tp.Name의 값을 비교하는 것입니다. Guru99 – ASP.NET.
단계 5) 이제 테스트 프로젝트를 실행해 보겠습니다. 이를 위해 메뉴에서 테스트->실행->모든 테스트를 선택해야 합니다.
산출:-
Visual Studio에 테스트 탐색기 창이 나타납니다. 여기에는 위의 결과가 표시되고 Visual Studio에서 성공적인 테스트가 실행되었음을 표시합니다.
MSTest에서 사용하게 될 속성 및 어설션
The Microsoft`.VisualStudio.TestTools.UnitTesting` 네임스페이스에는 대부분의 ASP.NET 단위 테스트를 다루는 몇 가지 속성과 어설션이 포함되어 있습니다. 이러한 것들을 먼저 익히면 나중에 작성하는 모든 테스트를 더 쉽게 읽고 유지 관리할 수 있습니다.
- [테스트 클래스] - 해당 클래스를 테스트 컨테이너로 표시합니다. MSTest는 검색 시점에 이 속성을 가진 클래스를 스캔합니다.
- [테스트 방법] - 매개변수가 없는 공개 메서드를 개별 테스트로 표시합니다. 이 메서드는 void, Task 또는 ValueTask를 반환합니다.
- [테스트 초기화] / [테스트 정리] 각 테스트 메서드 실행 전후에 실행하세요. 이를 사용하여 모의 저장소 또는 메모리 컨텍스트와 같은 공유 설정 환경을 생성하고 해제할 수 있습니다.
- [클래스 초기화] / [클래스 정리] - 전체 수업에 대해 한 번만 실행합니다. 예를 들어 테스트 데이터베이스를 초기화하는 등 설정 비용이 많이 드는 경우에 유용합니다.
- [DataRow] 및 [DataTestMethod] - 매개변수화된 입력값을 제공하여 단일 테스트 방법으로 여러 경우를 테스트할 수 있도록 합니다.
각 테스트 메서드 내부에서 Assert 클래스는 결과를 확인합니다. 일반적인 호출로는 값 비교를 위한 Assert.AreEqual, 부울 값을 위한 Assert.IsTrue 및 Assert.IsFalse, 참조를 위한 Assert.IsNull 및 Assert.IsNotNull, 그리고 예상되는 예외를 위한 Assert.ThrowsException 등이 있습니다. 모든 테스트는 Arrange, Act, Assert 패턴을 사용하여 구성하고, 설정, 호출 및 검증이 시각적으로 분리되도록 합니다. 이러한 구조는 실패하는 테스트를 쉽게 디버깅할 수 있도록 해줍니다. 실패하는 줄은 거의 항상 맨 아래에 있는 단 하나의 Assert이기 때문입니다.
ASP.NET 환경에서 MSTest, NUnit, xUnit 비교 분석
.NET 생태계에는 세 가지 테스트 프레임워크가 주로 사용됩니다. 각 프레임워크는 Visual Studio 내에서 실행되고 dotnet test와 통합되므로, 차이점은 주로 스타일, 커뮤니티 지원 및 기본 동작에 있습니다.
- MST테스트 – 배송업체 Microsoft 또한 이 기능은 이 튜토리얼 초반에 사용된 Visual Studio 단위 테스트 프로젝트 템플릿에 사전 설치되어 있습니다. 팀이 Visual Studio에서 단위 테스트를 처음 접할 때 가장 안전한 기본 설정입니다. Microsoft 스택.
- N 단위 – 세 개 중 가장 오래된 것으로, 원래는 다음에서 이식되었습니다. JUnit이 라이브러리는 풍부한 제약 조건 모델, TestCase 및 TestCaseSource를 통한 매개변수화된 테스트, 그리고 모든 .NET 버전에 걸친 완벽한 지원을 제공합니다.
- xUnit.net ASP.NET Core 및 Entity Framework Core 팀에서 내부적으로 사용됩니다. SetUp 메서드를 생성자와 IDisposable로 대체하고, 동작당 하나의 테스트 클래스를 권장하며, [TestMethod] 대신 [Fact]와 [Theory]를 사용합니다.
세 가지 프레임워크 모두 속성을 통해 테스트를 검색하고, `dotnet test` 명령어를 통해 실행되며, CI 파이프라인에서 사용할 수 있는 `trx` 또는 `xUnit` XML 보고서를 생성합니다. Azure DevOps, GitHub Actions 및 Jenkins 직접 사용할 수 있습니다. 첫 번째 ASP.NET 프로젝트의 경우 MSTest를 사용하면 툴체인을 단순하게 유지할 수 있습니다. 더 풍부한 파라미터화를 원하거나 이미 ASP.NET Core를 사용하는 팀은 프레임워크와의 일관성을 위해 xUnit을 선택하는 경우가 많습니다.
ASP.NET 애플리케이션 단위 테스트를 위한 최고의 사례
몇 가지 습관을 잘 지키면 ASP.NET 프로젝트 수명 주기 동안 도구 모음을 빠르고 안정적이며 유용하게 유지할 수 있습니다.
- 메서드당 하나의 동작만 테스트하세요. 서로 관련 없는 여러 가지 사항을 검증하는 테스트는 여러 가지 이유로 실패하며 수정하는 데 시간이 더 오래 걸립니다.
- 의도에 따라 이름을 지정하세요. MethodUnderTest_Scenario_ExpectedResult와 같은 패턴을 사용하면 테스트 탐색기에서 클래스에 대한 읽기 쉬운 명세를 출력할 수 있습니다.
- 장치를 외부 시스템으로부터 격리하십시오. 파일, 네트워크 및 데이터베이스 호출을 인터페이스로 감싸고 가짜 또는 모의 객체로 교체하여 테스트가 실제 종속성에 접근하지 않도록 합니다.
- 테스트는 빠르게 진행하세요. 전체 유닛 테스트 스위트가 몇 초 안에 완료되도록 목표를 세우세요. 느린 테스트는 건너뛰게 되고, 건너뛴 테스트는 회귀 오류를 숨깁니다.
- 계획, 실행, 주장 순서로 진행하십시오. 세 개의 짧은 블록 사이에 빈 줄이 있으면 의도를 명확히 전달하고 오류가 있는 줄을 쉽게 찾을 수 있습니다.
- 모든 커밋에 대해 테스트를 실행합니다. CI 파이프라인에 dotnet 테스트를 연결하여 테스트 오류가 발생하면 배포 대신 병합을 차단합니다.ping 생산에.
- Trac코드 커버리지를 계산하되, 그 수치를 쫓아다니지는 마세요. 커버리지는 검증되지 않은 경로를 강조하지만, 단순히 숫자가 많다고 해서 품질이 보장되는 것은 아닙니다. Rev누락된 줄이 실제로 어떤 역할을 하는지 살펴보세요.
이러한 방법들을 함께 적용하면 위에서 구축한 DemoTest 프로젝트는 모든 푸시에서 회귀 오류를 잡아내고, 향후 개발자를 위해 동작을 문서화하며, ASP.NET 애플리케이션을 리팩토링할 때 확신을 주는 테스트 스위트의 기초가 됩니다.


















