2012-05-23 4 views
1

표준 WPF 응용 프로그램이 있습니다. VS 솔루션에는 기본 프로젝트와 단위 테스트 프로젝트 (표준 VS 단위 테스트 제품군 사용)가 있습니다.다른 빌드에 대한 대체 시작 개체

단위 테스트 이외의 테스트 목적 (예 : 대화식으로 새로운 코드 조각을 시험해보기) 전체 응용 프로그램을 시작한 다음 테스트 할 양식으로가는 길을 클릭하십시오.

다른 엔트리 포인트로 대체 빌드를 선택할 수 있으면 좋겠다. 필자가 필요로하지 않는 모든 요소를 ​​건너 뛰고 내가 원하는 곳에서 나를 떨어 뜨린다. "debug (test)"라는 "debug"및 "release"외에 추가 빌드 구성을 만들었습니다. 이 빌드를 선택할 때 실행되는 다른 시작 개체를 어떻게 설정합니까?

또는이 문제에 대한 대체 솔루션이 있습니까? 테스트 및 프로파일 링을 단순화하기 위해 추가 프로젝트 또는 dll을 추가하지 않는 것을 선호합니다.

한 가지 가능한 솔루션은 컴파일러 기호를 정의하고

#if DEBUG_TEST 
    TestWindow view = new TestWindow(); 
    view.Show(); 
#else 
    MainWindow view = new MainWindow(); 
    view.Show(); 
#endif 

아무것도 덜 해키 내 App.xaml.cs를에 확인하는 것입니다?

답변

2

나는이 방법을 '해킹'이라고 생각하는 이유를 알지 못합니다.
이것은 올바른 방향 인 것으로 보입니다.
구성 DEBUG (TEST)을 선택하고 프로젝트의 속성 페이지에 DEBUG_TEST 정의를 추가하십시오.

테스트를 완료하면 정상적인 구성으로 돌아갑니다.

+0

하지만 나에게 대신 단순히 다른 app2.xaml을 가지고있는 일반 코드와 같은 파일의 테스트 코드의 일부를 가지고 이상한 것 같다. cs. 어쨌든 나는 이렇게 할 수있을 것 같아. – HugoRune

2

다른 방법은 의존성 주입 될 것이다 : http://www.martinfowler.com/articles/injection.html

의는이 코드를 사용한다고 가정 해 봅시다 : 당신은 MainWindows

DIContainer.SetDefaultInstance<IMainView, MainView>(); 
를 사용하도록 의존성 삽입 컨테이너를 구성 자신의 메인 프로젝트에서

IMainView view = DIContainer.GetInstance<IMainView>(); 
view.Show(); 

및 테스트 프로젝트에서

DIContainer.SetDefaultInstance<IMainView, TestView>(); 

MAINVIEW Testview 등은

interface IMainView 
{ 
    void Show(); 
} 

이 간단한 방법은 자신 (use Activator.CreateInstance<T> in GetInstance)에 의해 수행하지만, 거기에 프레임 워크의 몇이의 가지고 치료가 될 수있다 구현해야합니다.

Which .NET Dependency Injection frameworks are worth looking into?

질문을 쓰는 동안 솔루션은 나에게 발생한
+1

결국 나는 간단한 컴파일러 심볼 접근법을 사용했지만 의존성 주입은 분명히 살펴 봐야 할 정보처럼 보인다. – HugoRune

관련 문제