2013-04-22 2 views
1

나는 종종 .exe으로 컴파일되는 DLL 프로젝트를 가지고 있으므로 클래스 프로젝트를 쉽게 테스트 할 수 있습니다. 한 클래스는 Main() 메서드를 포함하고 있는데, .dll 파일로 컴파일 할 때 쓸모가 없습니다. 클래스 라이브러리로 컴파일 할 때마다이 클래스를 프로젝트에서 자동으로 제외하고 싶습니다. 전능하신 구글이 내 질문에 대한 답을 갖고있는 것처럼 보이지 않기 때문에 나는이 문제에 부딪치게 된 최초의 사람들 중 하나가되어야 할 것 같다. 어떻게해야 하는가?Visual Studio : DLL로 컴파일하는 경우 클래스 제외

+1

단위 테스트 프로젝트를 만들고 거기에서 .DLL을 테스트하십시오. – LukeHennerley

+0

단위 테스트는 단순히 별도의 메소드 테스트에 사용되지 않습니까? 전체적으로 프로그램을 테스트하고 싶습니다. –

+0

이것은 프로그램이 아닙니다. 당신이 가지고있는 것의 근본적인 요지는 당신이 말했듯이 .DLL입니다, 그러므로 그것은 응용 프로그램이 아닙니다. 귀하의 방법을 테스트하는 것은 근본적으로 당신이 어쨌든 달성하려고 시도하는 것입니다, 그렇지 않습니까? – LukeHennerley

답변

1

나는 이것을 지속적으로 수행함에있어 단위 테스트를 진지하게 고려할 것이다. 단위 테스트가 제대로 구현되지 않더라도 단지 중간 디버거로 사용합니다. 나는 단위 테스트 프로젝트를 코드 디버깅을위한 콘솔 어플리케이션의 용도로 사용한다고 말하면서 액세스를 얻는 관점에서 유닛의 어떤 형태를 구현하기를 원한다면 당신의 인생을 훨씬 더 쉽게 그리고 미래에 만들 것입니다. 당신이 할 수있는 시험.

1) 조건부 컴파일러 옵션을 사용

[TestMethod] 
public class YourClassNameTests 
{ 
    public T YourObject; 
    [TestInitialize()] 
    public void Initializer() 
    { 
    YourObject = new T(); 
    } 
    [TestMethod()] 
    public void YourMethodTest() 
    { 
    //Arrange 
    YourObject.ReliantProperty = 1; 
    //Act 
    var objResult = YourObject.YourMethod(); 
    //Assert 
    Assert.IsTrue(objResult == 1); 
    } 
} 
+0

내가하고 싶은 테스트는 단위 테스트가 아닙니다. 그들은 일반적으로 DLL의 기능을 테스트합니다. 나는 실시간으로 획득 한 데이터로 작업하고 있으며 올바른지 여부를 확인할 수 있도록 출력을 표시하는 테스트 프로그램이 필요합니다. 프로그래밍 방식으로 확인할 수는 없습니다. –

+0

그런 다음 Luke가 권고하는 것처럼 테스트 할 콘솔 응용 프로그램 프로젝트를 추가하는 것을 고려해야합니다. 즉, 테스트를 수행하는 별도의 프로젝트가 정답과 같게 들릴 것입니다. –

0

당신은 내가 생각할 수있는 솔루션의 몇 가지있다. 이 Main 메서드 internal을 확인하거나 실행할 수있는 테스트 프로젝트로 이동)

2 #endif 다음 DEBUG

public void Main() { 
// Do Stuff 
} 

#IF 디버그

에있는 경우 예를 들어, 만 포함되어 있습니다. 그런 다음 직접 사용하거나 테스트 DLL이 내부 메소드를 볼 수 있는지 확인하십시오.

3) Main 메서드를 원래 DLL을 참조하는 완전히 다른 .exe로 옮깁니다. (이는 테스트 프레임 워크를 사용하지 않고 옵션 2와 유사합니다).

관련 문제