단위 테스트에서 유사한 개체 비교

NikolaiDante

두 개의 유사한 물체를 비교하는 가장 좋은 방법은 무엇입니까?

주어진 FlintlockDTOFlintlock:

public class FlintlockDTO
{
  public string GName { get; set; }

  public string SharedPropertyName { get; set; }

  ...
}

public class Flintlock
{
  public Flintlock(FlintlockDTO inflator)
  {
    this.GoodName = inflator.GName;
    this.SharedPropertyName = inflator.SharedPropertyName;
    ...
  }

  public string GoodName { get; private set; }

  public string SharedPropertyName { get; private set; }
  ...
}

두 클래스 모두 N 개의 속성 (예 :)을 공유 SharedPropertyName하지만 동일하지만 이름이 다른 M 속성 (예 : GoodName\ GName.)에서는 다릅니다 .

fluentassert 와 같은 도구 는 속성 이름이 일치하면 거의 작동합니다.

flintlockDto.ShouldBeEquivalentTo(flintlock);

fluentassert 또는 다른 도구에서 깔끔하게 수행 할 수있는 방법이 있습니까?

이상적으로는

flintlockDto.IsTheSameAs(flintlock).WhenMapping("GName","GoodName");
Andrzej Gis

StriplingWarrior가 언급 한 Likeness 에 대해 더 자세히 설명하기로 결정했습니다 . 너겟 패키지 로 사용할 수 있습니다 .

다음은 그 예입니다.

using NUnit.Framework;
using Ploeh.SemanticComparison;
using Ploeh.SemanticComparison.Fluent;

namespace Tests
{
    [TestFixture]
    class Tests2
    {
        [Test]
        public void ObjectsShuldEqual()
        {
            var flintlockDto = new FlintlockDTO()
            {
                GName = "name",
                AdditionalProperty = "whatever",
                SharedPropertyName = "prop name"
            };
            var flintlock = new Flintlock(flintlockDto);

            Likeness<Flintlock, FlintlockDTO> flintFlockDtoLikeness = flintlock
                .AsSource().OfLikeness<FlintlockDTO>()
                .With(dto => dto.GName).EqualsWhen((flintlock1, dto) => flintlock1.GoodName == dto.GName) // you can write an extension method to encapsulate it
                .Without(dto => dto.AdditionalProperty);

            // assert
            flintFlockDtoLikeness.ShouldEqual(flintlockDto);
        }
    }

    public class FlintlockDTO
    {
        public string GName { get; set; }

        public string SharedPropertyName { get; set; }

        public string AdditionalProperty { get; set; }
    }

    public class Flintlock
    {
        public Flintlock(FlintlockDTO inflator)
        {
            this.GoodName = inflator.GName;
            this.SharedPropertyName = inflator.SharedPropertyName;
        }

        public string GoodName { get; private set; }

        public string SharedPropertyName { get; private set; }
    }
}

보시다시피 :

  • 이름이 같은 속성에 대해 자동 비교를 수행합니다.
  • 다른 이름의 속성이 일치해야하는지 여부를 지정할 수 있습니다 (실제로는 상자에서 벗어난 상태이지만 확장 메서드를 작성하여 캡슐화 할 수 있음).
  • 속성을 비교할 수 없는지 여부를 지정할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

단위 테스트에서 비공개 정적 최종 값에 액세스하기위한 모범 사례

분류에서Dev

개체 비교에 대한 간단한 Adobe Flash 게임

분류에서Dev

단일 개체에 대한 사용자 지정 비교기 사용

분류에서Dev

Python Eve 웹 서비스에 대한 단위 테스트 사례

분류에서Dev

테스트를 위해 Symfony 컨테이너의 개인 서비스 교체

분류에서Dev

비동기 작업 단위 테스트시 NDB Future 개체의 고유 한 값 설정

분류에서Dev

Typescript에서 개체의 특정 필드를 비교 (및 업데이트)하기위한 유형 정의

분류에서Dev

.net에서 vba 단위 테스트-강력한 형식의 COM 개체

분류에서Dev

익명 JSON 개체 컬렉션에 대한 단위 테스트

분류에서Dev

비 정적 클래스의 개인 정적 메서드에 대한 단위 테스트

분류에서Dev

Angular / JS에서 고유 한 목록을 만들기 위해 해당 ID로 Javascript 개체 비교

분류에서Dev

모의 클래스를 사용하여 상태를 모의하는 것과 유사한 단위 테스트를 위해 Service Fabric에서 서비스 초기화 매개 변수를 모의하는 방법은 무엇입니까?

분류에서Dev

Scala에서 단위 테스트를위한 개체 메서드 조롱 또는 감시

분류에서Dev

서비스를 사용한 Angular 2 및 단위 테스트

분류에서Dev

Visual Studio : 디버그 모드에서 개체 상태 캡처 및 단위 테스트에서 사용

분류에서Dev

C #에서 일반 클래스 유형의 두 개체 비교

분류에서Dev

junit 5 단위 테스트에서 @Autowired에 대한 개체를 모의하는 방법은 무엇입니까?

분류에서Dev

동일한 비공개 구현을 공유하는 별도의 메서드에 대해 중복 단위 테스트가 있어야합니까?

분류에서Dev

파생 개체를 사용하지 않는 단위 테스트

분류에서Dev

왜 두 개의 리터럴 정도 ° 기호가 Windows에서는 단위 테스트에서 같지만 Linux에서는 비교되지 않습니까?

분류에서Dev

캐슬 윈저는 단위 테스트에서 해결하는 동안 fakeiteasy 개체를 사용합니다.

분류에서Dev

단일 PowerShell 배열에서 개체 비교

분류에서Dev

서로 다른 시간대의 두 날짜 개체를 비교하고 정확한 시간 차이를 초 단위로 가져옵니다.

분류에서Dev

이온 서비스에 대한 단위 테스트 정의되지 않음

분류에서Dev

유사한 문자열에 대해 두 개의 CSV 비교

분류에서Dev

유형 T의 복잡한 개체에 대한 사용자 지정 비교 자 만들기

분류에서Dev

R에서 서로 다른 데이터 프레임의 행을 비교하기위한 비모수 테스트

분류에서Dev

Flutter에서 단위 테스트를 비동기로 표시하는 이유

분류에서Dev

개체 비교 보고서

Related 관련 기사

  1. 1

    단위 테스트에서 비공개 정적 최종 값에 액세스하기위한 모범 사례

  2. 2

    개체 비교에 대한 간단한 Adobe Flash 게임

  3. 3

    단일 개체에 대한 사용자 지정 비교기 사용

  4. 4

    Python Eve 웹 서비스에 대한 단위 테스트 사례

  5. 5

    테스트를 위해 Symfony 컨테이너의 개인 서비스 교체

  6. 6

    비동기 작업 단위 테스트시 NDB Future 개체의 고유 한 값 설정

  7. 7

    Typescript에서 개체의 특정 필드를 비교 (및 업데이트)하기위한 유형 정의

  8. 8

    .net에서 vba 단위 테스트-강력한 형식의 COM 개체

  9. 9

    익명 JSON 개체 컬렉션에 대한 단위 테스트

  10. 10

    비 정적 클래스의 개인 정적 메서드에 대한 단위 테스트

  11. 11

    Angular / JS에서 고유 한 목록을 만들기 위해 해당 ID로 Javascript 개체 비교

  12. 12

    모의 클래스를 사용하여 상태를 모의하는 것과 유사한 단위 테스트를 위해 Service Fabric에서 서비스 초기화 매개 변수를 모의하는 방법은 무엇입니까?

  13. 13

    Scala에서 단위 테스트를위한 개체 메서드 조롱 또는 감시

  14. 14

    서비스를 사용한 Angular 2 및 단위 테스트

  15. 15

    Visual Studio : 디버그 모드에서 개체 상태 캡처 및 단위 테스트에서 사용

  16. 16

    C #에서 일반 클래스 유형의 두 개체 비교

  17. 17

    junit 5 단위 테스트에서 @Autowired에 대한 개체를 모의하는 방법은 무엇입니까?

  18. 18

    동일한 비공개 구현을 공유하는 별도의 메서드에 대해 중복 단위 테스트가 있어야합니까?

  19. 19

    파생 개체를 사용하지 않는 단위 테스트

  20. 20

    왜 두 개의 리터럴 정도 ° 기호가 Windows에서는 단위 테스트에서 같지만 Linux에서는 비교되지 않습니까?

  21. 21

    캐슬 윈저는 단위 테스트에서 해결하는 동안 fakeiteasy 개체를 사용합니다.

  22. 22

    단일 PowerShell 배열에서 개체 비교

  23. 23

    서로 다른 시간대의 두 날짜 개체를 비교하고 정확한 시간 차이를 초 단위로 가져옵니다.

  24. 24

    이온 서비스에 대한 단위 테스트 정의되지 않음

  25. 25

    유사한 문자열에 대해 두 개의 CSV 비교

  26. 26

    유형 T의 복잡한 개체에 대한 사용자 지정 비교 자 만들기

  27. 27

    R에서 서로 다른 데이터 프레임의 행을 비교하기위한 비모수 테스트

  28. 28

    Flutter에서 단위 테스트를 비동기로 표시하는 이유

  29. 29

    개체 비교 보고서

뜨겁다태그

보관