.csproj 등의 프로젝트 파일 관련 수정이 불가한 경우 unit test package 설치 관련 질문입니다

unit test를 진행하려고 nuget 에서 unit test package를 설치하고 테스트를 진행하면서 코드를 작성한 뒤에 푸시를 했더니

프로젝트 관련 configuration은 타 팀과도 같이 결정한 사항이라 임의로 변경하면 안되고 혹시나 필요하면 DLL참조로 테스트를 하라고 하는데요

일단 DLL참조로 테스트를 하는것이 무슨 개념인지 잘 모르겠습니다

혹시 단위 테스트를 (저 혼자만이라도) 로컬에서 진행하고 커밋에는 테스트 관련 코드나 패키지가 포함되지 않게 하는 방법이 있을까요?

"DLL 참조"란 빌드의 결과물인 어셈블리(.dll) 파일을 직접 사용하는 참조 방식입니다.
.dll 파일은 보통 bin/ 폴더의 하위 폴더에 들어 있죠.

만약 비주얼 스튜디오에서 작업하는 경우라면,

우선, 테스트 대상 프로젝트를 깃 저장소에서 끌어 와서 로컬 컴퓨터에 솔루션을 만듭니다. (이하 “팀 솔루션”) 이 솔루션을 빌드하면, bin/ 폴더에 빌드된 결과물(.dll)이 생기겠죠?

그 다음, 테스트를 위한 별도의 솔루션을 생성합니다.
프로젝트 템플릿은 xunit, nunit 이든 원하는 것을 사용하면 됩니다. (이하 “테스트 솔루션”)

  1. DLL 참조
    테스트 솔루션에 있는 테스트 프로젝트에 우클릭 하고, [추가]=>[프로젝트 참조]를 선택한 다음,
    팀 솔루션의 빌드 결과물인 .dll 파일을 찾아 선택합니다.
    그러면 테스트 프로젝트의 [종속성] 항목(솔루션 탐색기에 있음)에 “어셈블리” 항목이 뜨고 그 아래에 방금 추가한 어셈블리가 등록되어 있을 것입니다.
    물론, 테스트 프로젝트의 .csproj 파일 내부에도, <reference> 항목으로 추가되어 있을 것입니다.
    이때부터, 테스트 프로젝트에서 테스트 대상 프로젝트의 객체를 사용할 수 있습니다.(테스트 코드를 작성할 수 있습니다)

  2. 프로젝트 참조
    테스트 솔루션에 우클릭 해서 [추가]=>[기존 프로젝트]를 선택하고, 팀 솔루션에 존재하는 테스트 대상 프로젝트의 .csproj 를 선택합니다.
    그러면, 테스트 대상 프로젝트가 테스트 솔루션에 추가됩니다.
    그 다음, 테스트 프로젝트에 우클릭하고, [추가]=>[프로젝트 참조] 를 클릭하면, 방금 추가한 프로젝트를 선택합니다. 그러면, 테스트 대상 프로젝트가 테스트 프로젝트의 참조 프로젝트로 등록됩니다.
    .csproj 파일에는 <projectreference> 항목으로 등록됩니다.
    이때부터, 테스트 대상 프로젝트의 코드를 테스트 할 수 있습니다.

프로젝트 참조는 코드 단위 참조이기에, 테스트 대상 프로젝트의 코드도 변경할 수 있습니다.
그래서, 애초에 끌어오기를 할 때 분기를 시켜서 끌어와야겠죠?

그리고, 테스트 프로젝트가 팀 솔루션과 분리되었기에, 이를 깃허브에 올릴 지 말지는 본인의 선택입니다. (올리는 게 좋겠죠?)

  1. 패키지 참조
    테스트 대상 프로젝트를 아예 패키지로 빌드하고, 누겟 저장소에 등록합니다.
    코드가 오픈되는 저장소인 “누겟 갤러리” 등이 부담스럽다면, 아래의 글을 참조하여 개인적 저장소를 만들고,

Creating and using a local NuGet package repository | by Vibhav Churi | Medium

누겟 패키지 관리자를 통해 패키지를 프로젝트에서 사용할 수 있습니다.
이렇게 참조하면, <packagerefernce> 항목으로 추가됩니다.

어디서 줏어 들었는데, DLL 참조보다는 패키지 참조가 더 권고되는 방식이라고 합니다.
기본적으로는 디버깅 시에 더 많은 정보에 접근가능하고, 추가적으로 버전업 여부가 자동으로 관리되는 이득이 있다고 합니다. DLL 파일은 빌드 후에 신규 버전이 있는 지 없는지를 알 길이 없지만, 누겟 배포시스템은 이에 대한 정보를 알려주기 때문입니다.

1개의 좋아요

정말 감사합니다 말씀해주신 방법 전부 다 시도해봐야겠네요 다시한번 정말 감사합니다

1개의 좋아요