NHibernate에서 Lazy-Loading 때문에 내 도메인의 모든 속성이 가상인지 확인해야합니다. 특정 네임 스페이스의 모든 클래스의 모든 공용 속성이 가상이라는 단위 테스트 검사를 작성하여이 작업을 수행하고 싶습니다.가상 속성 단위 테스트
어떻게하면됩니까?
미리 감사드립니다. Tobi
NHibernate에서 Lazy-Loading 때문에 내 도메인의 모든 속성이 가상인지 확인해야합니다. 특정 네임 스페이스의 모든 클래스의 모든 공용 속성이 가상이라는 단위 테스트 검사를 작성하여이 작업을 수행하고 싶습니다.가상 속성 단위 테스트
어떻게하면됩니까?
미리 감사드립니다. Tobi
필자도 비슷한 경우의 코드를 적용 해 보았습니다.
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>();
왜? 이 작업은 세션 팩토리를 빌드 할 때 수행됩니다. 세션 팩토리를 생성 할 수없는 경우 응용 프로그램은 시작하지 않아야합니다. 정말로 테스트를 원한다면 메모리 상 sqlite 데이터베이스에 대해 세션 팩토리를 빌드하십시오. 예외가 발생하지 않으면 모든 엔터티에 가상 멤버가 있습니다. –
필요없이 세션 팩토리를 빌드하면됩니다. 속성이 가상 구성이 아니라면 무엇이 잘못되었는지를 나타내는 자세한 메시지를 표시합니다.
세션 팩토리 란 무엇입니까? – SvenG
그것은 NH의 핵심입니다. 그것은 당신이 세션을 여는 방법입니다. 구성, 세션 팩토리 및 세션이 있습니다. 구성 세션 팩토리 (싱글 톤) 빌드, 팩토리가 세션 생성 (일시적) –
당신은 무엇을 시도? 리플렉션을 사용하여 도메인 클래스와 속성을 가져 오는 방법을 알고 있습니까? –
@WouterdeKort 사실 나는 지금 당장 모릅니다. 나는 그런 식으로는 생각하지 않고 반사를 가지고 놀았다. – Tobias