본문 바로가기

분류 전체보기

(41)
test_package.expect() 분석 0. 목표 Text.data 의 값이 'H' 인 Widget을 찾아 Widget Tree에 존재하는지 확인한다. void main(){ testWidgets('find a Text widget', (WidgetTester tester) async { await tester.pumpWidget(const MaterialApp( home: Scaffold( body: Text('H'), ), )); expect(find.text('H'), findsOneWidget); }); } expect(Finder, Matcher) expect(find.text('H'), findsOneWidget); 1. Finder Type Argument 설명 Finder find.text('H') Text나 EditableTe..
Flutter Widget Test 실습환경 - Mac OS Big Sur - Android Studio - Flutter 2.0.5 - Dart 2.12 Widget 테스팅 방법 소개 - widget 클래스를 테스트하기 위해서는 Flutter SDK 와 함께 제공되는 flutter_test 패키지가 필요하다. flutter_test package WidgetTester 프로그래밍적으로 Widget과 테스트 환경을 상호작용하는 클래스 testWidgets() 각 테스트 케이스를 위해 새로운 WidgetTester를 자동으로 생성하고, 일반 test() 함수 대신 사용된다. Finder 테스트 환경에서 widget을 찾을 때 사용하는 클래스 Matcher Widget별 Matcher 상수는 Finder가 테스트 환경에서 위젯을 찾는 지 여러..
try-with-resources 를 사용하자 0. 문제 상황 Read 버튼을 누르면 파일을 읽어 TextField에 표시하고, Delete를 누르면 파일을 삭제하는 간단한 Swing Application 이다. Read 버튼을 누르면 Scanner 객체를 이용해 파일을 읽는다. Delete 버튼은 File.delete() 메서드로 파일을 삭제한다. Read 버튼을 누르지 않고 Delete 버튼을 먼저 누르면, 파일은 문제없이 삭제된다. 그러나 Read 버튼으로 파일을 읽고 Delete 버튼을 누르면, 파일이 삭제되지 않은것을 확인할 수 있다. 혹시 프로세스에서 사용중이라 삭제가 안되나 싶어 Windows 탐색기에서 삭제를 시도하니 아래와 같은 경고창이 나왔다. 1. Scanner.close() Scanner 로 파일을 읽고, Resource(tes..
웹 애플리케이션 서버 구현 웹 브라우저가 생성한 요청 HTTP 메세지 - 회원저장 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 순서 1. 서버 TCP/IP 연결 대기, 소켓 연결 2. HTTP 요청 메세지를 파싱해서 읽기 3. POST 방식, /save URL 인지 4. Content-Type 확인 5. HTTP 메시지 바디 내용 파싱 - username, age 데이털르 사용할 수 있게 파싱 6. 저장 프로세스 실행 7. 비즈니스 로직 실행 - 데이터베이스에 저장 요청 8. HTTP 응답 메시지 생성 시작 - HTTP 시작 라인 생성 - Header 생성 - 메시지 바디에 HTML..
Launch4j 사용 방법 실습환경 - Windows 10 Pro - Intellij IDEA - Open JDK 8 - Apache Maven 3.8.1 0. 목표 이전 포스팅에서 생성한 jar 파일을 Windows 에서 실행가능한 exe 파일로 변환할 수 있다. 1. Launch4j 아래 URL의 Download 탭에서 Launch4j 다운로드 받는다. - http://launch4j.sourceforge.net/ Launch4j - Cross-platform Java executable wrapper Cross-platform Java executable wrapper Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in ..
Maven maven-jar-plugin 실습 환경 - macOS (11.2.1) - Visual Studio Code - Open JDK 11 - Apache Maven 3.8.1 목표 - maven-jar-plugin을 이용해 jar (Java ARchive file)을 생성할 수 있다. 1. maven-jar-plugin 추가 지난 포스팅에서 사용할 실습환경을 그대로 사용한다. ... {compile} {exec:java} org.apache.maven.plugins maven-jar-plugin 3.2.0 위와같이 maven-jar-plugin을 추가한다. 이 상태에서 mvn package 명령을 실행하면 "target" 하위에 demo-1.0-SNAPSHOT.jar 파일이 생성된다. 그러나, 생성된 jar 파일을 실행하려하면, 실행되지..
Null Safety Null Safety 지원 버전 - dart : 2.12 이상 - flutter : 2.0.0 이상 null safety 지원 여부 확인 방법 - dart pub outdated --mode=null-safety Null Safety 지원 환경으로 변경 pubspec.yml sdk 최소버전을 2.7에서 2.12 로 변경 environment: sdk: ">=2.12.0
Maven Compile, 실행 실습 환경 - macOS (11.2.1) - Visual Studio Code - Open JDK 11 - Apache Maven 3.8.1 0. 목표 Maven Project를 생성, 컴파일, 실행할 수 있다. 1. Maven Project 생성 Visual Studio Code 에서 Command Palette (fn + F1) 을 열어 Maven Project를 생성한다. archetype 설정 archetype은 Maven에서 제공하는 프로젝트 템플릿으로, 만들고자 하는 프로젝트 타입의 모범사례를 제공한다. maven-archetype-quickstart, version은 1.4 를 선택한다. groupId 설정 com.example 로 설정한다. artifactId - demo 로 설정한다. 2..
Reflection 을 이용해 Interface 정보 얻기 Dog 클래스는 Bark 와 Run 인터페이스를 구현한다고 가정한다. public class Dog implements Bark, Run{ @Override public void bark() { // do-something } @Override public void run() { // do-something } } 이때, Reflection 을 이용해 Dog 가 구현하는 Bark와 Run interface 정보를 얻을 수 있다. public class ClassNameTest { @Test void getInterfaces () { Dog dog = new Dog(); Class[] interfaces = dog.getClass().getInterfaces(); for(int i=0; i
알라딘 전자책 (+ 오브젝트) 프로그램 개발과 관련된 서적을 많이 보려 노력하는 편이다. 그동안 책을 구매할 땐 주로 종이책을 구매했다. 아무래도 개발서적을 읽을 땐 집중해서 읽어야 하고, 중요하다 판단되는 문장에는 밑줄도 쳐야하고, 한 쪽 구석에 요약을 하거나 내 생각을 적어야 하는 경우가 많기 때문이다. 물론 개발서적이 e-book으로 출간되지 않는 점도 한 몫 했다. 올해 2월부터 조영호 님이 출간한 "오브젝트, 코드로 이해하는 객체지향 설계 (이하 오브젝트)"로 학교 선, 후배와 함께 공부하고 있다. 격주마다(혹은 3주) 담당 파트를 정하고 정리해서 발표하는 방식으로 진행하고 있다. 스터디를 준비하기위해 책을 읽고, 책에 정리한 내용을 발표자료로 옮기다보니, 시선이 좌우로 계속 움직여 집중하기 어려웠다. 최근 "오브젝트"가 e..