2011-12-20 3 views
0

NHibernate에서 Lazy-Loading 때문에 내 도메인의 모든 속성이 가상인지 확인해야합니다. 특정 네임 스페이스의 모든 클래스의 모든 공용 속성이 가상이라는 단위 테스트 검사를 작성하여이 작업을 수행하고 싶습니다.가상 속성 단위 테스트

어떻게하면됩니까?

미리 감사드립니다. Tobi

+0

당신은 무엇을 시도? 리플렉션을 사용하여 도메인 클래스와 속성을 가져 오는 방법을 알고 있습니까? –

+0

@WouterdeKort 사실 나는 지금 당장 모릅니다. 나는 그런 식으로는 생각하지 않고 반사를 가지고 놀았다. – Tobias

답변

1

필자도 비슷한 경우의 코드를 적용 해 보았습니다.

public static bool Test<T>() 
    { 
     var valid = true; 

     foreach (var property in typeof(T).GetProperties()) 
     { 
      var accessor = property.GetAccessors()[0]; 
      if (accessor.IsVirtual) 
       continue; 

      Console.WriteLine("Member " + typeof(T).Name + "." + property.Name + " is not virtual"); 
      valid = false; 
     } 

     return valid; 
    } 

이 방법이 사용하십시오 :

var valid = Test<User>(); 
+0

왜? 이 작업은 세션 팩토리를 빌드 할 때 수행됩니다. 세션 팩토리를 생성 할 수없는 경우 응용 프로그램은 시작하지 않아야합니다. 정말로 테스트를 원한다면 메모리 상 sqlite 데이터베이스에 대해 세션 팩토리를 빌드하십시오. 예외가 발생하지 않으면 모든 엔터티에 가상 멤버가 있습니다. –

3

필요없이 세션 팩토리를 빌드하면됩니다. 속성이 가상 구성이 아니라면 무엇이 잘못되었는지를 나타내는 자세한 메시지를 표시합니다.

+0

세션 팩토리 란 무엇입니까? – SvenG

+0

그것은 NH의 핵심입니다. 그것은 당신이 세션을 여는 방법입니다. 구성, 세션 팩토리 및 세션이 있습니다. 구성 세션 팩토리 (싱글 톤) 빌드, 팩토리가 세션 생성 (일시적) –