많은 응용 프로그램에서 종종 전용 하위 알고리즘 (또는 단순히 잘 정의 된 코드 조각)을 사용하는 알고리즘을 사용합니다.Java에서 로컬 내부 클래스 메서드를 테스트하려면 어떻게해야합니까?
public class OldStyle {
public int mainAlg() {
int x = subAlg01();
int y = subAlg02();
int z = x * y;
return z;
}
private int subAlg01() {
return 3;
}
private int subAlg02() {
return 5;
}
}
이것은 잘 작동하지만 난 데 좋아하지 않았어요 : 나는 주요 알고리즘을 쓸 때
는 지금까지, 나는 예를 아래 (이전 스타일)처럼 각 하위 알고리즘의 개인 방법을 만들어 사적인 것이라 할지라도 하나의 메소드 (mainAlg)에서만 사용되는 메소드 (subAlg01 및 subAlg02)의 확산.
는 최근에 나는 지역 내부 클래스의 사용을 dicovered 지금 내 예 (NewStyle)입니다 :
public class NewStyle {
public int mainAlg() {
class Nested {
public int subAlg01() {
return 3;
}
public int subAlg02() {
return 5;
}
}
Nested n = new Nested();
int x = n.subAlg01();
int y = n.subAlg02();
int z = x * y;
return z;
}
}
나는 그것을 매우 좋아하지만 지금은 다음과 같은 문제가있다 : 어떻게 subAlg01 및 subAlg02 사용 테스트합니까를 JUnit?
덧붙여서 : 나는 일식을 사용하고 있습니다.
도움 주셔서 감사합니다.
편집 : : 내가 더 잘 설명하려고합니다 : 나는 정렬 알고리즘을 가지고 있다고 가정하고 예상대로 실행되는지 테스트하려고합니다. 이 정렬 알고리즘은 클래스 X의 메서드 m에서만 사용됩니다. 클래스 X의 private 메서드로 만들지 만 클래스 X는 일반적으로 정렬과는 아무 관계가 없으므로 클래스 X를 정렬 메서드로 "왜 망칠 수 있습니까?" 그래서 그것을 m 방법 안에 넣습니다. 나중에 약간의 시간이 걸리므로 정렬 알고리즘을 향상시키고 싶습니다. (더 빨리 만들 수 있습니다.)하지만 예상대로 작동하고 있는지 확인하고 싶기 때문에 원래 테스트로 다시 테스트하고 싶습니다.
그게 내가하고 싶은, 어쩌면 해결책이 없는데, 누군가가 나를 도울 수 있기를 바랍니다.
대답 선택 후 편집. 나는 로드니의 대답을 선택했다. 왜냐하면 그의 솔루션이 내가 채택한 솔루션이기 때문이다. 독립 실행 형 도우미 클래스는 하위 메소드가 무엇인지 명확하게 파악하고 테스트 할 수있는 능력을 제공한다 (도움이된다).
I을 이 문제는이 문제와 관련이 없으므로 Eclipse 태그를 제거했습니다. –