$ spring init -d=data-jpa,mysql,lombok -g=com.nuribot.youtube -a=youtube-data-api -n=youtube-data-api --package-name=com.nuribot.youtube --description="youtube api test & service" --build maven -j=1.8 -f --packaging=jar -v=1.0.0-SNAPSHOT youtube-data-api
$ cd youtube-data-api/
IntelliJ IDEA : File > Project Structure.. 선택
IntelliJ IDEA : File > Project Structure.. >
1. 왼쪽 탭 메뉴 Modules 선택
2. src > main > java 선택
3. 오른쪽 중단 탭 Sources 선택
IntelliJ IDEA : File > Project Structure.. >
1. 왼쪽 탭 메뉴 Modules 선택
2. src > test > java 선택
3. 오른쪽 중단 탭 Tests 선택
@SpringBootTest
실제 구동되는 어플리케이션과 똑같이 ApplicationContext를 로드하여 하고 싶은 테스트를 수행할 수 있습니다.
단, 어플리케이션에 설정된 bean 을 모두 로드하기 때문에 규모가 클수록 느립니다. - 단위테스트가 무의미해질 수 있습니다.
어플리케이션이 실행될 때의 설정을 임의로 바꾸어 테스트 진행 가능합니다.
여러 단위 테스트를 하나의 통합된 테스트로 수행할 때 적합합니다.
메인클래스와 함께 기본 제공됩니다.
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Test
public void contextLoads() {
}
}
@RunWith
JUnit에 내장된 Runner를 사용하는 대신 어노테이션에 정의된 Runner 클래스 사용합니다.
@SpringBootTest 를 사용하려면 JUnit 실행에 필요한 SpringJUnit4ClassRunner 클래스를 상속받은 @RunWith(SpringRunner.class)를 붙여야 합니다.
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class ChannelsListTest {
}
@SpringBootTest 의 파라미터들
value : 테스트가 실행되기 전에 적용할 프로퍼티들을 주입할 수 있습니다. (기존의 프로퍼티 오버라이드) properties : 테스트가 실행되기 전에 {key=value} 형식으로 프로퍼티 추가할 수 있습니다. classes : ApplicationContext에 로드할 클래스 지정할 수 있습니다.
(지정하지 않으면 @SpringBootConfiguration을 찾아서 로드합니다.) webEnvironment : 어플리케이션이 실행될 때의 웹 환경을 설정할 수 있습니다.
(기본값은 Mock 서블릿을 로드하여 구동)
// value와 properties는 함께 사용할 수 없으므로 에러 발생
@RunWith(SpringRunner.class)
@SpringBootTest(value = "value=test"
, properties = {"property.value=propertyTest"}
, classes = {DemoApplicationTests.class}
, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DemoApplicationTests {
@Value("${value}")
private String value;
@Value("${property.value}")
private String propertyValue;
@Test
public void contextLoads() {
assertThat(value, is("test"));
assertThat(propertyValue, is("propertyTest"));
}
}
사용 팁
프로파일(개발, QA, 운영) 마다 다른 DataSource를 갖는 경우, @ActiveProfiles("local") 을 사용할 수 있습니다.
@Transactional을 사용하면 테스트를 마치고 나서 수정된 데이터가 롤백됩니다.
@SpringBootTest는 기본적으로 @SpringBootApplication 이나 @SpringBootConfiguration 을 찾습니다. (둘 중 하나는 필수로 가지고 있어야 합니다.)
테스트 소스 작성
IntelliJ IDEA : TEST 소스 실행 설정하기 > 1. Edit Configurations... 선택
Eelctron은 native applications을 생성하기 위한 플레임웍으로 Javascript, HTML, CSS 의 웹기술(web technologies)를 이용합니다.
그리고 이번 문서에는 React를 사용할 것입니다.
React는 JavaScript library 로 user interfaces를 빌드하고 더많은 것들을 지원해 줍니다.
React setup 을 보다 쉽게 만들기 위해 우리는 Create React App 을 사용할 것입니다.
Create React App (CRA) 은 대박입니다. buckget-of-time을 절약해주고, config 설정 지옥을 벗어나게 해줍니다.
Create React App 은 (페이스북 개발자가 만든) 툴 로써, 당신이 React apps을 빌드할 때의 거대한 출발점을 제공해줍니다.
특히 설정(setup) 및 구성(configuration)에 걸리는 시간을 절약해줍니다.
단지 하나의 명령만으로 실행하며, Create React App을 설정하는 툴로 당신이 React project를 시작할때 필요합니다.
Rescripts 는 CRA setup 제거(ejecting)없이 사용할 수 있게 해줍니다.
Ejecting CRA 는 실제로 피하고 싶은 것으로, 향후 CRA 개선이 될때 더 이상 혜택을 받을 수 없게 됩니다.
Electron Builder는 desktop app 배포를 위해 패키징하는데 이용합니다.
(Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS.
In our case we'll be using React.)
(React is JavaScript library for building user interfaces... and so much more.)
(To make the React setup easier we're going to use Create React App.
Create React App (CRA) is awesome because it saves buckets-of-time and eliminates config hell.Create React App is a tool (built by developers at Facebook) that gives you a massive head start when building React apps.
It saves you from time-consuming setup and configuration. You simply run one command and Create React App sets up the tools you need to start your React project.)
(Rescripts allows us to customize the CRA setup without ejecting. Ejecting CRA is something you really want to avoid, because you will no longer benefit from the future improvements to CRA.)
(Electron Builder is used to package our desktop app for distribution.)
1. create-react-app 툴을 이용하여 my-app 이라는 my-app 프로젝트를 만듭니다.
$npx create-react-app my-app $ cd my-app
npx 는 npm 5.2.0 이후 버전을 설치하면 npx 라는 새로운 바이너리가 설치됩니다. npx는 npm의 패키지 사용에 도움이되는 도구입니다.
2. yarn으로 electron, electron-builder 를 설치합니다.
yarnadd electron electron-builder --dev
3. yarn 으로 wait-on concurrently, electron-is-dev의 개발도구를 설치합니다.