하는 방법 장치 테스트 방법 개 Java 코 틀린

드 딕 시트
드 딕 시트

에 따라
Jul23, 2019·4 분 읽

네,백만 달러 질문입니다. 개인 방법을 단위 테스트하는 방법?개발자가 자신의 코드베이스에서 개인 메서드를 테스트해야합니까? 또는 공공 방법의 신뢰에 그들을 떠나는 것은 방법입니다. 모든 개발자는 우리가 실제로 테스트해야하는지 여부를 자체 의견을 가지고 있습니다. 그래서,간단히 말해서,질문은”이 일을 위해 우리가 시도 할 수있는 좋은 접근 방식이 존재합니까?따라서 개발자가 2019 년에 자바/코 틀린 기반 앱의 개인 방법을 테스트 할 수있는 가능한 모든 옵션이 있습니다:(아니,나는 코딩 관행에 위배되는이 작업을 수행하지 않을 것입니다. (이 테스트 코드와 혼합 생산 코드에 좋지 않다. 일반적인 믿음에도 불구하고 자바 리플렉션을 통해 다른 클래스의 개인 필드와 메소드에 실제로 액세스 할 수 있습니다. 그것은 심지어 어려운 일이 아니다. 이것은 단위 테스트 중에 매우 편리 할 수 있습니다.참고:독립 실행 형 자바 응용 프로그램으로 코드를 실행할 때 단위 테스트 및 일반 응용 프로그램과 마찬가지로,이 경우에만 작동합니다. 당신은 자바 애플릿 내부에서이 작업을 수행하려고하면,당신은 보안 관리자와 주변에 바이올린이 필요합니다. 그러나,그것은 당신이 아주 수시로 할 필요가 있는 무언가가 아니기 때문에,이 원본에서 이제까지는 남겨둔다.메서드 매개 변수 반사 지원은 자바 8 에 추가되었습니다. 간단히 말해서 런타임에 매개 변수 이름을 얻는 데 대한 지원을 제공합니다.이 응용 프로그램을 사용하면 개인 필드에 액세스 할 수 있습니다.이 응용 프로그램을 사용하면 개인 필드에 액세스 할 수 있습니다. 이 메서드는 공개 필드 만 반환하므로 작동하지 않습니다. 다음은 개인 필드가있는 클래스의 간단한 예이며,그 아래 코드는 자바 리플렉션을 통해 해당 필드에 액세스 할 수 있습니다.너무 굵게 줄을 알 수 있습니다. 이 특정 인스턴스에 대한 액세스 검사를 해제하면 리플렉션 전용입니다. 이제 호출자가 해당 범위의 일부가 아닌 경우에도 개인,보호 또는 패키지 범위 인 경우에도 액세스 할 수 있습니다. 여전히 일반 코드를 사용하여 필드에 액세스 할 수 없습니다. 컴파일러는 그것을 허용하지 않습니다.이 메서드를 호출 할 때 개인 메서드에 액세스 할 수 있습니다.이 메서드를 호출 할 때 개인 메서드에 액세스 할 수 있습니다. 이 메서드는 공용 메서드 만 반환하므로 작동하지 않습니다.다음은 개인 메서드가있는 클래스의 간단한 예이며 그 아래 코드는 자바 리플렉션을 통해 해당 메서드에 액세스 할 수 있습니다:

public class PrivateObject {private String privateString = null;public PrivateObject(String privateString) {
this.privateString = privateString;
}private String getPrivateString(){
return this.privateString;
}
}PrivateObject privateObject = new PrivateObject("The Private Value");Method privateStringMethod = PrivateObject.class.
getDeclaredMethod("getPrivateString", null);privateStringMethod.setAccessible(true);String returnValue = (String)
privateStringMethod.invoke(privateObject, null);System.out.println("returnValue = " + returnValue);

이 예제 코드는 인쇄 text"returnValue = The Private Value”getPrivateString()PrivateObject인스턴스를 만들어에서 시작 부분의 코드는 샘플입니다.이 메서드는 다음과 같이 작동합니다. 이 메서드 호출은 개인 메서드를 반환합니다. 이 메서드는 특정 클래스에서 선언 된 메서드 만 반환하고 수퍼 클래스에서 선언 된 메서드는 반환하지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다.