본문 바로가기

java9

[JAVA] BUILD-OPERATE-CHECK 패턴 BUILD-OPERATE-CHECK (또는 Arrange-Act-Assert) 패턴은 소프트웨어 테스트의 구성 방식 중 하나이다. 이 패턴은 테스트 케이스를 구성하는 단계와 테스트를 실행하고 결과를 확인하는 단계로 나누어져 있다. 패턴의 각 단계는 다음과 같이 정의된다. 1) BUILD 또는 ARRANGE 테스트 환경을 설정하고 테스트에 필요한 객체, 데이터 또는 상태를 준비한다. 이 단계에서는 테스트에 필요한 사전 조건을 설정한다. 2) OPERATE 또는 ACT 준비된 테스트 환경에서 실제로 테스트 대상을 실행하거나 상호작용한다. 테스트 대상에 대한 동작을 수행한다. 3) CHECK 또는 ASSERT 실행된 결과를 검증하여 예상된 동작과 일치하는지 확인한다. 테스트 결과를 평가하여 기대한 결과와 일치.. 2023. 6. 17.
[JAVA] given-when-then 관례 given-when-then은 행위 주도 개발(Behavior-Driven Development, BDD)에서 사용되는 테스트 관례이다. 이 관례는 테스트 케이스를 작성할 때 구조화와 가독성을 높여주는 방식으로 테스트를 구성한다. given-when-then의 각 부분은 다음과 같이 정의된다. 1) given 테스트를 위한 사전 조건을 설정하는 단계이다. 테스트 환경을 준비하고, 초기 상태를 설정한다. 이 단계에서는 테스트에 필요한 객체, 데이터, 상태 등을 사전에 정의한다. 2) when 테스트 대상의 동작을 실행하는 단계이다. 주로 어떤 이벤트나 동작을 수행하는 부분이며, 테스트 대상이 실제로 실행되는 시점이다. 3) then 실행된 결과를 검증하는 단계이다. 테스트 대상의 동작에 대한 예상 결과를 .. 2023. 6. 16.
[JAVA] 의존성이라는 비용이 이익보다 크다? Mock? '의존성이라는 비용이 이익보다 크다'라는 말은, 일반적으로 소프트웨어 개발이나 시스템 설계에서 의존성이 가지는 부담이 그로 인해 얻는 이점을 상쇄할 정도로 크다는 의미이다. 의존성은 한 요소가 다른 요소에 의존하거나 종속됨을 나타낸다. 예를 들어, 클래스 A가 클래스 B를 사용하고 있다면, 클래스 A는 클래스 B에 의존성을 가지고 있다. 의존성은 코드 간의 상호작용을 통해 구현되며, 이는 모듈 또는 객체들 사이의 관계를 형성합니다. - 의존성이 비용으로 작용하는 이유 1. 변경의 전파: 의존성이 있는 요소 중 하나를 변경하면, 그 변경은 의존하는 다른 요소에도 영향을 미칠 수 있다. 따라서 변경이 전파되는 것을 관리하고 조절하는 데 추가적인 비용이 발생할 수 있다. 2. 결합도 증가: 의존성이 많아질수록.. 2023. 6. 15.
[JAVA] 체크 예외(Checked Exception, 확인된 예외)란? 확인된 예외는 컴파일러에 의해 강제적으로 처리되어야 하는 예외이다. 확인된 예외는 메서드 선언부에 throws 키워드를 사용하여 명시적으로 선언되며, 해당 메서드를 호출하는 코드에서는 이러한 예외를 처리해야 한다. 예외 처리는 try-catch 블록을 사용하여 예외가 발생한 경우 적절한 조치를 취할 수 있도록 해야한다. 확인된 예외는 주로 외부 자원과의 상호작용(파일 입출력, 네트워크 통신 등)이나 예상할 수 있는 예외 상황(파일이 없는 경우, 데이터베이스 연결 실패 등)에서 발생하는데, 이러한 예외는 프로그램이 적절히 예외 상황을 처리할 수 있도록 안내하고, 안정성과 신뢰성을 향상시킨다. 확인된 예외는 예외 처리를 강제하기 때문에 개발자는 예외를 명시적으로 처리하거나 호출자에게 예외 처리 책임을 위임해.. 2023. 6. 14.
왕초보를 위한!! 자바 기초 코드 해석 방법 3) 인스턴스 생성 FileInputStream stream = new FileInputStream(sectionName); 코드를 해석해보자 이 코드는 FileInputStream 클래스의 인스턴스를 생성하고, 이를 stream 변수에 할당하는 구문이다. FileInputStream은 파일에서 데이터를 읽을 수 있는 스트림이다. sectionName은 생성할 파일 입력 스트림의 대상 파일을 나타내는 문자열이다. 보통은 파일 경로나 파일명을 전달하여 해당 파일에 대한 입력 스트림을 생성한다. 예를 들어, "example.txt"와 같이 파일명을 전달할 수 있다. 따라서, 위의 코드는 sectionName에 해당하는 파일을 읽기 위한 FileInputStream 인스턴스를 생성하고, 이를 stream 변수에 할당하는 것이다... 2023. 6. 13.
왕초보를 위한!! 자바 기초 코드 해석 방법 2) 메서드, 타입 public List retrieveSection(String sectionName) { return new ArrayList(); } 위 코드는 retrieveSection 메서드를 정의하는 부분이다. public List retrieveSection(String sectionName): retrieveSection이라는 공개(public) 메서드를 선언하고 있다. 이 메서드는 String 타입의 sectionName 파라미터를 받으며, List 타입의 결과를 반환한다. return new ArrayList();: 새로운 ArrayList 객체를 생성하여 반환한다. 이는 RecordedGrip 객체의 리스트를 저장할 수 있는 동적 배열을 생성하는 것이다. retrieveSection 메서드는 secti.. 2023. 6. 13.