Markop Test는 .NET를 위한 무료 오픈 소스, 집중 테스트 도구입니다. Markop 테스트를 사용하면 단위 테스트 , 통합 테스트 , 기능 테스트 및 로드 테스트를 쉽게 작성할 수 있습니다.
Markop 테스트를 사용하려면 다음 단계를 수행해야합니다.
1- 솔루션 내부의 클래스 라이브러리 프로젝트를 만들고 수행하려는 테스트의 종류 (예 : "FunctionalTest"에 따라 이름을 지정하십시오. 솔루션에 프로젝트를 추가하는 것을 잊지 마십시오.
dotnet new classlib -n [YOUR PROJECT NAME] dotnet sln add [YOUR PROJECT NAME] 3- 테스트 프로젝트 내부에 Markop 테스트 패키지를 설치하십시오.
너겟 :
Install-Package MarkopTest또는 Dotnet CLI 사용 :
dotnet add package MarkopTest4- 수행하려는 테스트 종류에 따라 단위 테스트, 통합 테스트, 기능 테스트 또는 하중 테스트로 이동해야합니다.
단위 테스트는 가장 작은 코드의 동작을 테스트해야합니다. Markop Test는이 프로세스를 완전히 자동화하기 위해 여기에 있습니다. 단위 테스트 작성은 전에는 결코 쉬운 적이 없었습니다 !!
우선 AppFactory 클래스 UnitTestFactory 만들어야합니다.
그런 다음 Initializer 및 ConfigureTestServices 메소드를 무시해야합니다
Initializer 메소드를 사용하면 사용자 정의 이니셜 라이저를 작성하여 여기에서 호출하는 데 필요한 모든 데이터베이스를 시작할 수 있습니다. Markop Test는 나머지를 처리합니다 !!
ConfigureTestServices 메서드는 서비스를 등록/제거 할 수있는 기능을 제공합니다. 이렇게하면 테스트를 시작하기 전에 앱의 등록 된 서비스를 완전히 제어 할 수 있습니다 !!

그런 다음 수업을 만들고 자신의 AppFactory 클래스에서 확장해야합니다.
다음으로 클래스 내부의 메소드를 정의하고 pereperable 테스트 속성을 넣어야합니다. Xunit의 [Fact] 또는 [Theory] 또는 기타 유효한 테스트 속성 일 수 있습니다.
이제 방법 안에 테스트 코드를 작성할 수 있습니다 !!
예를 들어 아래 코드에서 우리는 Code를 썼습니다 EmailNormalize

다른 소프트웨어 시스템 모듈 간의 상호 작용을 검증하기 위해 개별 코드 구성 요소를 테스트하는 소프트웨어 테스트의 일부.
우리는이 테스트를 사용하여 앱의 인프라와 전체 프레임 워크를 테스트하는 데 사용됩니다. 종종 다음 구성 요소를 포함합니다.
Markop은 Postman과 같은 외부 API 테스트 도구를 사용하는 대신 깨끗한 통합 테스트를 쉽게 구현하고 출력을 쉽게 구현할 수 있도록 앱 공장 추상화를 제공합니다.

우선 IntegrationTestFactory 클래스에서 AppFactory 클래스를 만들어야합니다.
다음으로 이니셜 라이저, configureTestServices, getUrl, validateresponse 메소드를 무시해야합니다.
그런 다음 수업을 만들어 자신의 AppFactory 클래스에서 확장해야합니다. 클리너 구현을 위해 API의 각 컨트롤러에 대한 클래스를 작성하는 것이 좋습니다.
Endpoint Atrribute를 사용하여 요청 주소에 대한 패턴을 지정하십시오.
다음으로 클래스 내부의 메소드를 정의하고 pereperable 테스트 속성을 넣어야합니다. Xunit의 [Fact] 또는 [Theory] 또는 기타 유효한 테스트 속성 일 수 있습니다.
이제 방법 안에 테스트 코드를 작성할 수 있습니다 !!
예를 들어 아래 코드에서 SignIn API를 테스트하기 위해 코드를 작성했습니다.

주의 1 : controller 및 action 과 같은 런타임 변수는 Endpoint atribute 내에서 클래스 이름 과 메소드 이름 으로 강화됩니다.
주의 2 : Markop Test는 클래스 이름이 끝날 때 [ "테스트", "테스트", "컨트롤러"]를 자동으로 무시합니다.
예를 들어 위의 코드에서 controller 값은 "계정"이며 action 값은 "서명"이됩니다. 요청은 /Account/SignIn 엔드 포인트로 전송됩니다.
테스트는 통합 테스트를 집계하고 실제 출력을 미리 정해진 출력과 비교하여 수행 할 수있는 제품의 기능을 결정합니다.
기능 테스트를 위해 사례 시나리오를 사용합니다. 예를 들어, 뉴스 시스템에서는 뉴스 엔티티 작성 , 편집 및 삭제 와 같은 뉴스 시나리오 관리 테스트를 테스트해야합니다. 시스템에서 트랜잭션 워크 플로우를 구현할 수 있습니다.
통합 테스트에서와 같이 Markop은 앱 공장 추상화를 제공하여 깨끗한 기능 테스트를 쉽게 구현할 수 있습니다.
Initializer(IServiceProvider hostServices) : Initializer 메서드를 사용하면 테스트를 위해 사용자 정의 데이터베이스를 시작할 수 있습니다. 당신이해야 할 일은 사용자 정의 이니셜 라이저를 구축하고 여기에서 호출하는 것입니다. Markop Test는 나머지를 처리합니다 !!
ConfigureTestServices(IServiceCollection services) ConfigureTestServices 메서드는 서비스를 등록/제거 할 수있는 기능을 제공합니다. 이렇게하면 테스트를 시작하기 전에 앱의 등록 된 서비스를 완전히 제어 할 수 있습니다 !!

GetUrl(string url, string controllerName, string testMethodName) GetUrl httpclient가 요청을 보낼 올바른 주소를 구축 할 수 있도록 도와줍니다.
ValidateResponse(HttpResponseMessage httpResponseMessage,TFetchOptions fetchOptions) ValidateResponse 사용하면 API의 예상 동작에 따라 응답 유효성 검사를 사용자 정의 할 수 있습니다.
이 프로젝트에 기여하는 데 관심이 있다면 우선, 우리는 진심으로 감사를 표하고 싶습니다.
도움이 필요하면 언제든지 저희에게 연락하십시오.
MIT