코드를 개발하면서 일반적으로 클래스의 빌딩 블록 중 일부를 일반적으로 사적이라고하더라도 단위 테스트를 수행하려고합니다. 프로젝트 내부에 유닛 테스트가 있다면 "Friend"를 사용하여이 작업을 수행하고 정상적으로 사용할 수 있도록 함수를 비공개로 유지할 수 있습니다. 하지만 차라리 NUnit 테스트를 자체 프로젝트로 옮길 것입니다. 내가 원하는 효과를 얻으려면 어떻게해야합니까? 당신은 (쉽게) 테스트 테스트 프로젝트에서 개인 다른 프로젝트에서 방법하지만 내부 방법을 테스트하는 것은 매우 흔한 일 (VB에서 Friend
가) InternalsVisibleToAttribute
를 사용하지 않을 수VB .NET에서 개별 프로젝트의 개인 함수를 테스트하는 방법은 무엇입니까?
5
A
답변
11
. 이로 인해 Friend
구성원은 다른 어셈블리에서 액세스 할 수 있습니다.
분명히 C# 2에서 사용할 수 있지만 VB 9에서는 새로운 기능이었습니다 ... 이유는 확실하지 않지만 this blog post from Bart de Smet은 간단한 예입니다.
생산 어셈블리에 서명 한 경우 테스트 어셈블리에도 서명해야하므로 InternalsVisibleToAttribute
인수에 공개 키를 지정해야합니다. 자세한 내용은 this Stack Overflow answer을 참조하십시오.
3
Reflection을 사용하여 개인 메소드를 호출 할 수 있습니다. 이 작업을 수행 할 샘플이 많이 있습니다. 빠른 구글 검색에서
+0
그리고 이것은 나를 가장 많이 도왔습니다. http://www.codeproject.com/KB/cs/testnonpublicmembers.aspx – demoncodemonkey
1
: http://www.codeproject.com/KB/cs/testnonpublicmembers.aspx
기본 사항 :이 VB9의 새로운 이유에 관해서는
public static object RunStaticMethod(System.Type t, string strMethod,
object [] objParams)
{
BindingFlags eFlags =
BindingFlags.Static | BindingFlags.Public |
BindingFlags.NonPublic;
return RunMethod(t, strMethod,
null, aobjParams, eFlags);
} //end of method
public static object RunInstanceMethod(System.Type t, string strMethod,
object objInstance, object [] aobjParams)
{
BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public |
BindingFlags.NonPublic;
return RunMethod(t, strMethod,
objInstance, aobjParams, eFlags);
} //end of method
private static object RunMethod(System.Type t, string
strMethod, object objInstance, object [] aobjParams, BindingFlags eFlags)
{
MethodInfo m;
try
{
m = t.GetMethod(strMethod, eFlags);
if (m == null)
{
throw new ArgumentException("There is no method '" +
strMethod + "' for type '" + t.ToString() + "'.");
}
object objRet = m.Invoke(objInstance, aobjParams);
return objRet;
}
catch
{
throw;
}
} //end of method
관련 문제
- 1. 개인 디렉터리에서 함수를 테스트하는 방법은 무엇입니까?
- 2. .NET에서 개인 메서드를 테스트하는 모범 사례는 무엇입니까?
- 3. Subversion 함수를 테스트하는 방법은 무엇입니까?
- 4. VB 프로젝트의 코드 줄
- 5. 개인 데이터를 개별 셀에 추가하는 방법은 무엇입니까?
- 6. VB .Net에서 공용 서브 루틴/함수를 숨길 수 있습니까?
- 7. 바이너리 파일을 생성하는 함수를 테스트하는 방법은 무엇입니까?
- 8. Django에서 시간 관련 함수를 테스트하는 방법은 무엇입니까?
- 9. Gitorious : 프로젝트의 개인 모드
- 10. VB .NET에서 유형 캐스팅
- 11. VB .NET에서 트리 컨트롤을 데이터 소스에 바인딩하는 방법은 무엇입니까?
- 12. VB NET에서 액세스 외부의 액세스 함수 호출
- 13. 새 개별 스레드에서 벡터에서 각 함수를 실행하는 방법은 무엇입니까?
- 14. 프로젝트의 minSdkVersion을 변경하는 방법은 무엇입니까?
- 15. VB .NET에서 블록 주석이 부족합니까?
- 16. 파일이 .NET에서 완전히 복사되었는지 테스트하는 방법
- 17. RIA 서비스 DB에 레코드를 삽입하는 함수를 단위 테스트하는 방법은 무엇입니까?
- 18. Xcode에서 결과를 비동기 적으로 반환하는 함수를 테스트하는 방법은 무엇입니까?
- 19. 템플릿 경로를 제공하지 않고 get_template을 사용하는이 함수를 테스트하는 방법은 무엇입니까?
- 20. PLSQL Developer에서 DML이 포함 된 Oracle 함수를 테스트하는 방법은 무엇입니까?
- 21. 파생 클래스 내에서 개인 가상 함수를 구현하는 방법은 무엇입니까?
- 22. 비즈니스 계층을 테스트하는 방법은 무엇입니까?
- 23. jsunit으로 ajax를 테스트하는 방법은 무엇입니까?
- 24. webform을 테스트하는 방법은 무엇입니까?
- 25. PRNG를 테스트하는 방법은 무엇입니까?
- 26. 스코프를 테스트하는 방법은 무엇입니까?
- 27. 다른 프로젝트의 dll 함수를 호출하려면 어떻게 추가합니까?
- 28. VB 함수를 자바 스크립트로 변환
- 29. 개별 프런트 엔드 웹 서버를 테스트하는 방법
- 30. .NET에서 SQL 사용자 정의 함수를 사용하는 방법은 무엇입니까?
(이것은 위의 링크 된 코드 프로젝트 사이트에서 붙여), 그것이 비용/이익은 상쇄된다. VB는 C#과 InternalsVisibleTo보다 이름을 해석하는 방법이 매우 다르므로 이름 조회가 매우 복잡합니다. VB8에서는 너무 비싸 VB9로 떨어졌습니다. 우리는 실제로 VB10에서 (cont) – JaredPar
(cont) 계정에 대한 이름 변경을 추가로 변경하고 있습니다. – JaredPar
이 대답에 감사드립니다 –