2017-12-01 19 views
0

정적 일치 예상과 실제 값 사이의 차이가 무엇 I 대신 actualStringexpectedRegexPattern 값을 전달하고 expectedRegexPattern 대신 actualString 값을 통과 할 때의 차이가 무엇Assert.Matches()

public static void Matches(string expectedRegexPattern, string actualString); 

인 값?

방법 1-Assert.Matches("EN", result[0].LanguageCode);

방법 2 - 동일한 성능과 같은 일을하는 방법Assert.Matches(result[0].LanguageCode,"EN");

모두. 위의 방법과 가장 좋은 방법의 차이점에 대해 혼란 스럽습니까?

+0

물론 양쪽 모두 'x == y' ==>'y == x'와 같이 반환됩니다. 그러나 질문은 단지 당신의 * 예상 * 행동이며, 당신이 실제로 얻는 것은 무엇인지 *입니다. 이것이 두 매개 변수의 의미입니다. – HimBromBeere

+1

첫 번째 매개 변수는 ** 사용자가 기대하는 ** 것입니다. 두 번째 것은 당신의 단위 테스트 **가 실제로 얻은 것입니다 **. Assert.AreEqual 예를 들어. Assert.AreEqual (4,2) vs Assert.AreEqual (2,4)를 실행하면 어떤 일이 일어나는지 비교하십시오. 반환 된 메시지가 다릅니다. – mjwills

+0

"무엇이 최선"으로 끝나는 지의 투표는 당신이 테스트하고 싶은 것에 달려 있습니다. – HimBromBeere

답변

2

나는 거기에서 그 방법을 발견했기 때문에 xunit을 테스트 프레임 워크로 사용할 것으로 기대합니다. 두 문자열의 내용이 같은지 확인하려는 경우 Assert.Equal("Your text", "Your text")을 사용할 수도 있습니다. Assert.Matches 메서드는 텍스트가 원하는 형식인지 여부를 확인하는 데 사용됩니다. 형식은 .net 정규 표현식으로 설명됩니다. 예를 들어이 전화 Assert.Matches("^[0-9]$", "1")을 사용하면 문자열의 숫자가 0과 9 사이인지 확인할 수 있습니다. 매개 변수의 순서를 Assert.Matches("1", "^[0-9]$")으로 변경하면 메서드가 예외를 throw하고 테스트가 실패로 표시됩니다.

+0

다 괜찮아 ..하지만 '0-9'구문이 맞습니까 ?? –

+0

알았어 .. 처음으로 투표 할께 ... 오버플로 스택에 오신 것을 환영합니다. –

+0

대단히 감사합니다. 그래, 바로 거기에 오류가 있었다. 나는 그것을 바로 잡았다. 필자는 테스트의 가독성을 높이기 위해 FluentAssertions Nuget 패키지를 사용하는 것이 좋습니다. 이 패키지를 사용하면 'stringToCheck.Should().'대신 'Assert.Equal ("value", stringToCheck)'Be ("value") '를 쓸 수 있습니다. –

2

@Stivi는 Matches의 경우 중요한 차이점을 정확하게 지적하지만 Equals 및 기타 어설 션 방법의 경우에도 덜 중요하지만 여전히 중요한 차이점이 있습니다.

테스트 로그 출력에 잘못된 메시지가 표시 될 수 있습니다. 많은 테스트 프레임 워크 오류 등

를 기록합니다

값이 일치하지 않습니다 : 예상 : 실제 {expectedValue를} :. {actualValue} "

을 당신이 그들을 전환한다면, 당신이 볼하려는 잘못된 값이 잠재적으로 문제를 진단하려고 사람을 혼란 "예상"

예로 들어이 테스트를 보자.

void TestValueIsZero(): 
{ 
    int value = 1; 
    Assert.Equals(0, value); 
    // logs "Values to not match. expected: 0, actual: 1 
    Assert.Equals(value, 0); 
    // logs "Values to not match. expected: 1, actual: 0 
} 

사람은 실패에서 찾고 ed 테스트 로그는 전환 된 매개 변수로 인해 로그의 잘못된 "expected"및 "actual"값으로 인해 혼동 될 수 있습니다.

에 관계없이 매개 변수의 순서 (두 객체를 비교하고 차이가 발견되지 않은 경우는 true를 돌려)의 동일 할 수있다역학,하지만 의미은 여전히 ​​중요하다.