👨🏻‍💻 Development/☕️ Java

👨🏻‍💻 Development/☕️ Java

JUnit의 @BeforeClass 와 static block {}

Static Initializer (static block{}}는 JUnit이 아닌 JVM에 의해 호출 된다. 만약 예외가 static initializer 내부에서 발생된다면 테스트 프레임워크는 예외를 처리하고 보고하는 작업을 못 한다. 더 나아가 static initializer의 호출 시간은 @BeforeClass 메서드와 비교하여 잘 정의되지 않는다. static initializer는 정적 속성, 정적 메서드 또는 생성자 중 하나의 접근과 같은 첫 번째 실제 사용 시 클래스 로더당 한 번만 실행된다. 때론 이게 언제가 될지 가늠하기 어려울 때가 있다. (그래서 static initializer는 미래에 복잡한 버그를 야기할 수 있다.) 반면에 @BeforeClass는 각 클래스의 테스트 코드가 ..

👨🏻‍💻 Development/☕️ Java

2021년 09월 16일 TIL - Mocking Static Method

배경 & 문제점 바우처 관리 프로그램을 JAVA Spring 프레임워크로 구현하다가 Test Code 작성 중에 난관에 부딪혔다. VoucherService 테스트 코드를 작성하는데 Mockito 라이브러리를 이용해서 행위에 대한 테스트를 구현한다. class VoucherServiceTest { @Test @DisplayName("voucher가 생성되어야 한다.") void testCreateVoucher() { // ... } } Voucher Class를 만드는 VoucherFactory 클래스의 method인 createVoucher() 가 정해진 인스턴스(fixedAmountVoucher)를 반환하도록 mocking하려고 한다. // VocherFactory.class public class ..

👨🏻‍💻 Development/☕️ Java

2021년 09월 07일 TIL - 의존 역전 원칙 (Java)

높은 수준의 모듈? 낮은 수준의 모듈? 이해가 안되어서 TIL에 정리하고자 한다. Dependency Inversion Principle (의존관계 역전) 높은 수준의 모듈은 낮은 수준의 모듈에 의존하지 않아야 한다. 두 모듈 모두 추상화에 의존해야 한다. 추상화는 세부 사항에 의존하지 않아야 한다. 세부 사항은 추상화에 의존해야 한다. 예시 만일 우리가 MySQL 데이터베이스 사용하는 자바 어플리케이션을 만든다고 해보자. 그래서 (높은 수준) Java Application에서 (낮은 수준)MySQL ODBC Driver class를 이용해 작업하고 있다. // Java Application public class Main { public static void main(String[] args) { My..

👨🏻‍💻 Development/☕️ Java

Java의 Object 클래스

Object 클래스란 Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 됩니다. 그래서 자바에서 모든 클래스는 사실 Object를 암시적으로 상속받고 습니다. 그 이유는 모든 클래스가 공통으로 포함하고 있어야 하는 기능을 제공해야하기 때문입니다. 참고) java.lang 패키지 java.lang 패키지는 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합입니다. 따라서 자바에서는 java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있도록 하고 있습니다. java.lang 패키지 중에서도 가장 많이 사용되는 클래스는 바로 Object 클래스입니다. Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 됩니다. 따라서 자바의 모든 클..

👨🏻‍💻 Development/☕️ Java

[Java] String, StringBuffer, StringBuilder

Java에서 문자열을 다룰 수 있는 방법은 두 가지가 있습니다. 첫 번째로 문자열 상수에 대해 불변성(immutable)을 가진 String 클래스가 있고, 두 번째로 같은 메모리로 문자열을 다루는 StringBuffer, StringBuilder 클래스가 있습니다. String String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않습니다. 그래서 String 객체 문자열에 다른 문자열을 붙여도 기존 문자열에 붙이는 것 이 아니라, 새로운 String 객체를 만든 후 새 String 객체에 연결된 문자열을 저장하고 그 객체를 참조합니다. 때문에 String을 조작하는 연산은 시간과 자원을 많이 사용합니다. StringBuffer & StringBuilder 이 둘은 문자열을 한 번 만들고 연산..

황일용
'👨🏻‍💻 Development/☕️ Java' 카테고리의 글 목록