[Project를 위한 공부]

[Project를 위한 공부] COSMOS 읽어보기 (2)

dyk98 2025. 1. 10. 15:01

어제는 TEST 들을 살펴보았고 파일들을 보며 어떤게 잇는지 알아보자

COSMOS.Common.Tests

  1. Cosmos.Common.Tests.csproj
  2. ToHexStringTest.cs
  3. packages.lock.json

Cosmos.Common.Tests.csproj

우선 .NET 프로젝트를 구성하는 xml 파일로, .csproj 파일 형식인듯하다

  1. 이 프로젝트는 Microsoft.NET.Sdk를 기반으로 설정됨. Microsoft에서 제공하는 표준 .NET SDK를 사용하여 빌드 및 관리됩니다.
  2. 프로젝트의 주요 속성을 정의하는 섹션임
    • .2.1 net6.02.2 Debug;Release;TEST
  3. 프로젝트에서 사용하는 NuGet 패키지를 참조함.
    • MSTest 테스트 프레임워크를 포함합니다. - 단위 테스트를 작성 및 실행할 수 있도록 지원함.
    • MSTest 실행을 위한 어댑터임.
    • 테스트 실행 및 보고 기능을 제공함.
    • MSTest 및 기타 테스트 프레임워크와 함께 사용되는 SDK임.
    • .NET 프로젝트에서 테스트를 실행할 수 있도록 지원함.
    • 프로젝트에서 지원하는 빌드 구성을 정의함.
    • Debug: 디버깅용으로 최적화되지 않은 빌드.
    • Release: 배포용으로 최적화된 빌드.
    • TEST: 테스트 환경을 위한 추가적인 사용자 정의 구성.
    • 이 프로젝트는 .NET 6.0을 대상으로 빌드됩니다.
    • .NET 6.0은 장기 지원(LTS) 버전으로 최신 기능을 제공.
  4. reference .... 로 보임.
  5. Cosmos.Common` 프로젝트를 참조함
    • 상대 경로를 사용하여 외부에 위치한 .csproj 파일을 연결함.
    • 해당 프로젝트의 기능이나 코드를 재사용할 수 있도록 설정함.
  • 우선 이를 통해 sdk 가 .NET 6.0 이라는것 정도?ToHexStringTest.csMicrosoft.visualstudio.testtools.uniteTesting을 활용하여 숫자를 16진수 문자열로 변환하는것으로 보인다. 보니까 테스트를 할때, 비트 당으로 하는것 같다 32bit, 16bit, 8 bit 그리고 커스텀으로 이루어 져 있는것으로 보여 지금은 물론 테스트 케이스를 이런식으로 나누어 보았을때 다른사람들이 보기엔 이해가 편한것 같다. 다만 xDigitSrting 변수를 없애고 문자열을 바로 ret에 추가 시키면 가독성이 좀 개선 되지 않을까? 라는 생각이 든다.

packages.lock.json

여기서 볼만한건 Trasitive 와 Direct 한 페키지들의 버전들? 물론 나또한 모든 페키지를 다모르지만 package type들이 tranistive, Project, Direct 들이 있는것으로 보아 프로젝트에서 직접 추가한 NuGet 페키지, 참조된 페키지 혹은 프로젝트의 외,내부 프로젝트 참조를 한것들이 잇다?resolved 들을 보며 페키지 정보들정도 확인하면 좋은 듯하다. 나중에 의존성과 빌드시 로드일때 활용됨으로 확인을 해보았다.

https://github.com/CosmosOS/Cosmos/tree/master/Tests/Cosmos.Common.Tests

 

Cosmos/Tests/Cosmos.Common.Tests at master · CosmosOS/Cosmos

Cosmos is an operating system "construction kit". Build your own OS using managed languages such as C#, VB.NET, and more! - CosmosOS/Cosmos

github.com