2011-10-04 7 views
1

WP7 앱 코드의 개인 메소드에 대한 단위 테스트를 작성하고 싶습니다. 그래서 Silverlight Unit Test 코드에서 개인 메서드를 호출하는 방법을 알고 싶습니다. 아래는 단위 테스트를 작성하고자하는 코드 스 니펫입니다.단위 테스트 WP7의 개인 메소드

private void Next_Click(object sender, EventArgs e) 
    { 
     nextBtn.IsEnabled = false; 
     checking = true; 
     App app = Application.Current as App; 
     //Microsoft.Phone.Controls.TiltEffect.SetIsTiltEnabled((App.Current as App).RootFrame, true); 

     if (String.IsNullOrEmpty(AppHelper.AuthenticationToken)) 
     { 
      // Get Authentication Token 
      try 
      { 
       app.Flickr.AuthGetTokenAsync(frob, r => 
       { 
        Dispatcher.BeginInvoke(() => 
        { 
         if (r.HasError) 
         { 
          MessageBox.Show("Flickr error (" + r.ErrorMessage + ") - did you click Ok before setting flickr up in your browser?"); 
         } 
         else 
         { 
          // Store the authentication token 
          AppSettings.AuthenticationToken = r.Result.Token; 
          if (AppSettings.IsLoginIconPressed == false) 
          { 
           NavigationService.Navigate(new Uri("/Upload.xaml", UriKind.Relative)); 
          } 
          else 
          { 
           app.isNavigatedFromPage = true; 
           NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
           AppSettings.IsLoginIconPressed = false; 
          } 
         } 

         checking = false; 
        }); 
       }); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Flickr error (" + ex.Message + ") - did you click Ok before setting flickr up in your browser?"); 
      } 

     } // End of if 
     else 
     { 
      if (AppSettings.IsLoginIconPressed == false) 
      { 
       app.isNavigatedFromPage = true; 
       NavigationService.Navigate(new Uri("/Upload.xaml", UriKind.Relative)); 
      } 
      else 
      { 
       app.isNavigatedFromPage = true; 
       NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
       AppSettings.IsLoginIconPressed = false; 
      } 
     } // End of else 
    } 
+0

공개로 공개합니다 (예 : 비공개에서 공개로 변경). 대부분의 테스트 패키지는 일반적으로 테스트가 필요한 부분 즉 "공용 인터페이스"이므로 공용 인터페이스 만 봅니다. –

답변

2

다른 .Net 코드와 마찬가지로 InternalsVisibleTo 속성을 사용할 수 있습니다.

여기에 대한 설명이 있습니다. 다른 WP7 특정 내용은 here입니다.

그러나 한 가지 의견은 단위 테스트 개인 메서드를 사용하는 것이 코드 냄새 인 경우가 많다는 것입니다. 일반적으로 잘 정의 된 코드는 일반적으로 개인 메서드를 구체적으로 테스트 할 필요없이 철저한 단위 테스트를 허용하는 공용 인터페이스가 있습니다.


단위 테스트 및 개인 방법에 대한 일반적인 의견 외에도 MVVM 디자인 패턴을 적극 권장합니다. 비공개 next_click 메소드를 테스트하려는 주된 이유는 UI 코드 내에 전체 비즈니스 로직을 넣었 기 때문입니다. MVVM은 이런 종류의 로직을 쉽게 테스트 할 수있는 Model 및 ViewModel 클래스에 배치하는 패턴이며 Silverlight는 패턴을 특히 쉽게 사용할 수있게 해주는 몇 가지 기능을 가지고 있습니다.

0

개인은 현재 수업 내에서만 호출 할 수 있으며 밖에서는 호출 할 수 없음을 의미합니다. 단위 테스트가 밖에 있습니다.

직접 테스트하거나 다른 방법으로 공개 여부를 변경하려면 공개로 설정하십시오.