나는 starting
테스트를 담당하는 TestExecutor라는 자바 클래스를 가지고있다. 위의 작업을 각각 수행 내가 TestExecutor 클래스의 private 메소드를 생성 한 각 단계에 대한Java에서 좋은 객체 지향 디자인 예제
- Update test repository
- Locate the test script
- Create result empty directory
- Execute command
- Parse output
- Update database
, 모든 시도-catch 블록에 둘러싸여 : 테스트를 시작하는 단계의 수를 포함한다. 필자는 클래스가 너무 많아서 좋은 디자인이 아니라는 사실을 알고 있으며 많은 양의 기능이 개인 메서드에 숨겨져 단위 테스트에 고통을줍니다.
위의 구조와 비슷한 것으로부터 벗어나는 방법을 모르겠으므로이 클래스를 리팩터링하는 것에 대한 의견을 듣고 싶습니다. 아래의 코드 예는 다음과 같습니다.
public void start() throws TestExecuteException {
try {
updateRepository();
locateScript();
createResultDirectory();
executeCommand();
parseOutput();
updateDatabase();
catch(a,b,c) {
}
}
private updateRepository() {
// Code here
}
// And repeat for other functions
귀하의 방법은 공개되지 않는 이유는 무엇입니까? 클래스가 단일 책임을 가지고있는 한 단일 클래스에서 여러 메소드를 갖는 데는 아무런 문제가 없습니다. – underdog
TestExecutor 외부에서 메서드를 호출 할 필요가 없으므로 메서드를 비공개로 만들기로 결정했습니다. 내 문제는 클래스가 하나의 일반적인 책임 (테스트 실행)을 가지고 있지만 그 아래에 여러 가지 책임이 있다는 것입니다 (레지스트리 업데이트, 스크립트 찾기 등) – Adam
@Adam 제공 한 답변을 검토하고 더 명확히하기 위해 의견을 말하십시오. . 어떤 답변이 도움이 되었다면, 당신은 그들을 upvote 수 있습니다. 가장 유용한 답변 옆에있는 눈금을 클릭하여 답변을 수락 할 수도 있습니다. [누군가 내 질문에 대답 할 때 무엇을해야합니까?] (http://stackoverflow.com/help/someone-answers)를 읽어보십시오. 투표는 무료입니다. 그것은 비용이 들지 않습니다. 대답을 수락하면 +2의 답을 얻을 수 있습니다. 그래서 부끄러워하지 마십시오. 가서 돈을 지불하십시오! – CKing