keytool.exe -genkey -alias juheon -keyalg RSA -keypass 1234qwer -storepass 1234qwer -keystore juheon.jks keytool.exe -export -alias juheon -storepass 1234qwer -file juheon.cer -keystore juheon.jks keytool.exe -importkeystore -srckeystore juheon.jks -destkeystore juheon.key.p12 -deststoretype PKCS12 D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert D:\Java\32bit\jdk1.5.0_22\bin\keytool.exe -import -alias tsasample -keystore D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert -file D:\workspace\Servers\tsa-server-web-config\tomcat.cer keytool -import -alias somansa -keystore C:\Program Files\Java\jdk1.8.0_102\jre\lib\security\cacert -file c:\somansa.cer #인증서 생성 keytool -genkey -alias keyAlias -keyalg RSA -keypass changeit -storepass changeit –validity 9999 -keystore keystore.jks keytool -export -alias keyAlias -storepass changeit -file server.cer -keystore keystore.jks keytool -import -v -trustcacerts -alias keyAlias -file server.cer ...
JUnit Test
테스트 코드는 정말 반드시 필요하지만 많은 개발자들이 작성하기 귀찮아하고 제대로 작성하지 않는다. 나도... 하지만 이제 부턴 제대로 작성 하리라.
위와 같이 하고 실행하면 testException을 던진다.
Memory db로 설정되어 있는 경우는 정상적으로 실행되겠지만. 나는 H2를 파일로 저장하도록 설정하였다. 이렇게 설정하거나 실제 DB와 JPA가 연동된 경우에는 @AutoConfigureTestDatabase(replace=Replace.NONE) 어노테이션을 추가해야한다.
테스트 코드는 정말 반드시 필요하지만 많은 개발자들이 작성하기 귀찮아하고 제대로 작성하지 않는다. 나도... 하지만 이제 부턴 제대로 작성 하리라.
JPA Test
JSP repository를 테스트 하기 위해서는 @DataJpaTest 어노테이션을 추가한다. 테스트에서 CUD된 데이터들은 트렌젝션 처리에 의해 롤백된다. 롤백되지 않기를 원한다면 @Transactional(propagation = Propagation.NOT_SUPPORTED)를 추가한다.
Test class
@DataJpaTest
public class EmployeeServiceTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
EmployeeRespository repository;
@Test
public void getAllEmployees() {
Employee entity = new Employee("first", "last", "mail");
this.entityManager.persist(entity);
this.entityManager.persist(entity);
List list = this.repository.findAll();
assertThat(list.size()).isEqualTo(19);
}
위와 같이 하고 실행하면 testException을 던진다.
02:19:00.573 [main] INFO o.s.t.c.t.TransactionContext - Rolled back transaction for test: [DefaultTestContext@7494f96a testClass = EmployeeServiceTest, testInstance = com.ha.helloworld.service.EmployeeServiceTest@11fc564b, testMethod = getAllEmployees@EmployeeServiceTest, testException = javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement, mergedContextConfiguration = [MergedContextConfiguration@561b6512 testClass = EmployeeServiceTest, locations = '{}', classes = '{class com.ha.helloworld.HelloworldApplication}',
Memory db로 설정되어 있는 경우는 정상적으로 실행되겠지만. 나는 H2를 파일로 저장하도록 설정하였다. 이렇게 설정하거나 실제 DB와 JPA가 연동된 경우에는 @AutoConfigureTestDatabase(replace=Replace.NONE) 어노테이션을 추가해야한다.
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class EmployeeServiceTest {
...
댓글
댓글 쓰기