2012-03-04 5 views
0

프로젝트에서 heiracrchy를 재정렬하는 데 어려움을 겪고 있습니다. 모든 클래스를 패키지로 구성했지만 (잘못된 패키지) 이제 패키지를 별도의 레벨에 배치하는 것에 반대하는 패키지를 중첩해야한다고 생각합니까?JUnit 테스트 케이스 - 클래스를 볼 수 없습니다.

이제 프로젝트의 클래스 테스트 클래스를 작성할 때 모든 것을 반영하지 않고 관련 메소드를 볼 수 없습니다.

내가 지금 가지고있는 계층 구조가 enter image description here

무엇 내가 모든 것을 반사를 사용하지 않고 테스트 할 수 있도록 변경하고 둥지를 제대로 내 패키지 수 있어야합니까?

감사합니다.

+0

'관련 메서드보기'및 '리플렉션 사용'은 무엇을 의미합니까? 어쩌면 당신의 메소드의 가시성이 기본 패키지 레벨이라는 것을 의미할까요? 공개적으로 만들어서 고칠 수 있습니다 :'public void testMyStuff()' –

+0

테스트 클래스에서 클래스의 객체를 만들 때 사용할 수있는 메소드가없는 것 같습니다. – Biscuit128

+1

클래스와 테스트의 최소한의 예를 보여줄 수있어서 실제로하고있는 것을 볼 수 있습니까? – DNA

답변

2

메소드의 기본 액세스 가능성은 '패키지 가시성'입니다. 이에 IBM에서이 문서를 참조하십시오

http://www.ibm.com/developerworks/library/ws-tip-mem-visibility.html

패키지 외부 클래스에 당신의 방법을 볼 수 있도록하기 위해, 그들에게 공개 :

public void myMethod() {...} 
+0

나는 이것을 깨닫는다. 공개로 변경해도 아무 것도 바뀌지 않는다. 코드 완성을위한 기본 제안이 없다. – Biscuit128

+0

컴파일러가 코드 완성없이 코드에 액세스 할 수 있습니까? 어쩌면 당신은 전체 프로젝트를 청소해야합니다 (메뉴 프로젝트 -> 청소 ...) –

+0

아, 그리고 당신이 사용하는 모든 내부 클래스도 공개해야합니다! 그리고이 모든 것들이 작동하지 않는다면 정확한 상황 (/ 사용, 패키지 위치 등을 사용하는 특정 클래스)에 대한 질문에 더 많은 것을 써야한다고 생각합니다. 아마도 그 답을 찾는 데 도움이 될 것입니다. –

3

을을 가지고 테스트 파일을 정렬 src 파일과 동일한 패키지 구조. 그런 식으로 co.uk.mine.SomeClass의 모든 메소드는 비공개 메소드에 액세스 할 수있는 해당 co.uk.mine.SomeClassTest를 가질 수 있습니다. 프라이빗 메소드는 리플렉션을 통해 액세스 할 수 있습니다. 테스트 코드를 분리하여 보관하려면 2 개의 파일러 구조를 설정할 수 있어야합니다.

../src/co/uk/mine/SomeClass.java 
../test/co/uk/mine/SomeClassTest.java 
+0

예. 이것은 단위 테스트 클래스를 구성하는 일반적인 방법입니다. 테스트 클래스는 테스트중인 클래스와 동일한 패키지에 있으므로 패키지 액세스 방법을 볼 수 있지만 다른 소스 폴더에 있으므로 테스트와 주 코드가 분리됩니다. 당신에게 다른 방식으로 그것을 말하는 사람들이 있습니다 만, 그들을 무시하는 것이 안전합니다. –

+0

자바 세계의 표준은 '메이븐 레이아웃 (Maven layout)'이라고 덧붙일 가치가 있습니다. 프로젝트의 루트 내부에는'main'과'test'가있는'src' 디렉토리가 있습니다. 실제로 소스 루트 인'java' 디렉토리입니다. 이 표준을 고수 할 특별한 이유가 없지만 야생에서이 표준을 발견 할 수 있습니다. –

+0

maven 레이아웃 (그 사람의 취향)에 동의하지만 많은 사람들이 우리 개미 또는 다를 수있는 다른 규칙. 포인트는 미러 된 패키지를 허용하지만 별도의 폴더를 허용하는 클래스 경로에서 두 개의 디렉토리 구조를 사용하는 것입니다. 다시 말하지만, 저는 Maven을 선호하며, Maven을 사용 해보지 않은 경우 Maven을 권장합니다. – Romski

관련 문제