2010-05-27 2 views
4

커밋을하기 전에 C# 솔루션에서 수백 가지 단위 테스트를 모두 실행하는 것이 좋습니다. 단 몇 분만 걸릴 수 있기 때문입니다. 그러나 이미 모두 실행 한 후에도 문제가 해결되지 않았다면 내 솔루션에 using 지시문을 구성하기로 결정했습니다. 단위 테스트를 다시 실행해야합니까? 솔루션에있는 모든 파일을 검토하고 각각에 대해 Visual Studio의 '제거 및 정렬'명령을 실행하는 매크로가 있습니다. 필자는 모든 프로젝트가 여전히 using 지시문을 변경 한 후에 빌드하는 한 런타임에 문제가 없어야 함을 이해합니다. 이 올바른 생각입니까?명령어를 사용하여 구성하고 테스트를 다시 실행 하시겠습니까?

답변

2

음, 부분적으로 "제거 및 정렬"기능을 얼마나 신뢰 하느냐에 달려 있습니다. 지금까지 알고있는 바로는 주문은 중요하지 않지만 - 어떤 지시문이 존재합니까? 수는입니다.

예를 들어

, 당신은이 확장 방법에 있다고 가정 :이 네임 스페이스 MyExtensions의 유형에 있다면

public static int Count<T>(this List<T> source) 
{ 
    return 0; 
} 

을하고 원래 코드는 다음이었다

using MyExtensions; 
using System.Linq; 

... 
List<string> list = new List<string>(); 
int x = list.Count(); 

다음 첫 번째 제거를 using 지시문은 보이는 컴파일러 출력에 아무런 차이가 없으므로 (즉, 오류가없고 경고도 없음) 어떤 확장 메서드가 호출되었는지를 변경합니다.

이제는 "제거 및 정렬"이 실제로 동작 변경 변경을하지 않을 것이라고 믿습니다. 시작하기에 꽤 부서지기 쉬운 코드가 필요 하겠지만, "그 후에도 계속 만들어집니다"라는 말은 실제로 테스트가 계속 진행될 수 있음을 보장하기에 충분하지 않습니다.

개인적으로 필자는 어쨌든 테스트를 다시 수행 할 것이지만 필요하다면 똑같이 만족스럽지 않을 것입니다. Finglas가 언급했듯이, 어쨌든 변경 사항을 깨닫도록 경고하는 연속 빌드 시스템을 사용하고 있다면, 때때로 매우 잘못 이해하는 결과는 너무 비참하지 않을 것입니다. 물론, 수천 명의 개발자가 깨진 코드로 인해 불편을 겪게 될 경우 다른 문제입니다.

0

예. 단위 테스트를 다시 수행 할 필요가 없습니다. using 지시문의 순서는 컴파일러와 상관이 없습니다.

+0

글쎄, Visual Studio의 명령은 모두'using' 지시자를 재정렬하고 필요하지 않다고 생각하는 명령을 제거합니다. –

+0

@ Sarah : true. 그러나 나는 그것이 실수를하고 내가 사용했던 것을 제거하는 것을 본 적이 없다. 이것이 깨뜨릴 수있는 유일한 방법입니다. –

1

중요하지 않습니다.

개인적으로는 코드를 커밋하기 전에 테스트를 계속합니다.

+0

남자를 봐라. 그래서 내가 묻는거야. 나는 편집증 환자 야! 왜 지었을까요? –

+1

자동화 된 빌드 프로세스 - 모든 변경 (사용 순서의 변경은 예외는 아닙니다)은 자동 빌드를 사용하려는 경우 새 빌드가 시작되도록합니다. 개인적으로 이것은 좋은 일입니다. 최소한 빌드를 위반했다고 표시되지는 않습니다. 또한 단위 테스트의 이점 중 하나는 코드를 커밋 할 때 자신감을 갖게하고 편집증을 없애는 것입니다. 단위 테스트를 다시 실행하면이 편집증을 없애 버리면됩니다. 해가되는 것이 무엇입니까? ;) – Finglas

+0

나는 일단 예외를 만들기 시작하면 변경 사항을 깨는 것이 훨씬 쉬워지기 때문에 테스트를 다시 실행합니다. "아, 간단하고 간단한 변경"입니다. 그런 다음 테스트를 수행하고 항상 커밋하여 저장소를 작동 상태로 유지하는 것은 몇 가지 추가 단위 테스트의 가치가 있습니다. –