From 4d64e4bc052b2b098df48add1021887cf2cfb3f0 Mon Sep 17 00:00:00 2001 From: Sori <exploitsori@ajou.ac.kr> Date: Wed, 26 Mar 2025 18:42:45 +0900 Subject: [PATCH] ADD file uploads testing complate --- pom.xml | 142 ++++++++++++++++-- .../java/com/example/demo/TestController.java | 13 ++ src/main/java/com/example/demo/UserDto.java | 12 ++ .../example/demo/constant/ItemSellStatus.java | 4 + .../java/com/example/demo/entity/Item.java | 38 +++++ .../demo/repository/ItemRepository.java | 11 ++ .../resources/application-test.properties | 7 + src/main/resources/application.properties | 20 ++- .../com/example/demo/ItemRepositoryTest.java | 39 +++++ 9 files changed, 269 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/example/demo/TestController.java create mode 100644 src/main/java/com/example/demo/UserDto.java create mode 100644 src/main/java/com/example/demo/constant/ItemSellStatus.java create mode 100644 src/main/java/com/example/demo/entity/Item.java create mode 100644 src/main/java/com/example/demo/repository/ItemRepository.java create mode 100644 src/main/resources/application-test.properties create mode 100644 src/test/java/com/example/demo/ItemRepositoryTest.java diff --git a/pom.xml b/pom.xml index 1fd283a..ee799c7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,31 +5,24 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> - <version>3.4.4</version> + <version>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> - <groupId>com.example</groupId> + <groupId>com.example.demo</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> - <url/> - <licenses> - <license/> - </licenses> - <developers> - <developer/> - </developers> - <scm> - <connection/> - <developerConnection/> - <tag/> - <url/> - </scm> <properties> - <java.version>17</java.version> + <java.version>18</java.version> </properties> <dependencies> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> @@ -40,6 +33,97 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-jdbc</artifactId> + </dependency> + + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>javax.persistence</groupId> + <artifactId>javax.persistence-api</artifactId> + <version>2.2</version> + </dependency> + + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>com.querydsl</groupId> + <artifactId>querydsl-jpa</artifactId> + <version>5.0.0</version> + </dependency> + + <dependency> + <groupId>com.querydsl</groupId> + <artifactId>querydsl-apt</artifactId> + <version>5.0.0</version> + </dependency> + + <dependency> + <groupId>com.googlecode.json-simple</groupId> + <artifactId>json-simple</artifactId> + <version>1.1.1</version> + </dependency> + <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.9.0</version> + </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery</artifactId> + <version>3.6.0</version> + </dependency> + + <!-- https://mvnrepository.com/artifact/org.webjars/bootstrap --> + <dependency> + <groupId>org.webjars</groupId> + <artifactId>bootstrap</artifactId> + <version>5.1.3</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-devtools</artifactId> + </dependency> + + <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> + <dependency> + <groupId>org.mybatis</groupId> + <artifactId>mybatis</artifactId> + <version>3.5.13</version> + </dependency> + + <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> + <dependency> + <groupId>org.mybatis</groupId> + <artifactId>mybatis-spring</artifactId> + <version>3.0.1</version> + </dependency> + + </dependencies> <build> @@ -47,6 +131,32 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> + <version>${parent.version}</version> + <configuration> + <excludes> + <exclude> + <groupId>org.project-lombok</groupId> + <artifactId>lombok</artifactId> + </exclude> + </excludes> + </configuration> + </plugin> + + <plugin> + <groupId>com.mysema.maven</groupId> + <artifactId>apt-maven-plugin</artifactId> + <version>1.1.3</version> + <executions> + <execution> + <goals> + <goal>process</goal> + </goals> + <configuration> + <outputDirectory>target/generated-sources/java</outputDirectory> + <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> + </configuration> + </execution> + </executions> </plugin> </plugins> </build> diff --git a/src/main/java/com/example/demo/TestController.java b/src/main/java/com/example/demo/TestController.java new file mode 100644 index 0000000..643fb5f --- /dev/null +++ b/src/main/java/com/example/demo/TestController.java @@ -0,0 +1,13 @@ +package com.example.demo; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +@RestController +public class TestController { + @GetMapping(value = "/test") + public UserDto test(){ + UserDto dto = new UserDto(); + dto.setAge(17); + dto.setName("Jane"); + return dto; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/UserDto.java b/src/main/java/com/example/demo/UserDto.java new file mode 100644 index 0000000..3ba7a5a --- /dev/null +++ b/src/main/java/com/example/demo/UserDto.java @@ -0,0 +1,12 @@ +package com.example.demo; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +@Getter +@Setter +@ToString +public class UserDto { + private String name; + private Integer age; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/constant/ItemSellStatus.java b/src/main/java/com/example/demo/constant/ItemSellStatus.java new file mode 100644 index 0000000..d1ebff7 --- /dev/null +++ b/src/main/java/com/example/demo/constant/ItemSellStatus.java @@ -0,0 +1,4 @@ +package com.example.demo.constant; +public enum ItemSellStatus { + SELL, SOLD_OUT +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/entity/Item.java b/src/main/java/com/example/demo/entity/Item.java new file mode 100644 index 0000000..e19924f --- /dev/null +++ b/src/main/java/com/example/demo/entity/Item.java @@ -0,0 +1,38 @@ +package com.example.demo.entity; +import com.example.demo.constant.ItemSellStatus; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import java.time.LocalDateTime; +import javax.persistence.*; +import org.springframework.stereotype.Component; + +@Table(name="item") +@Getter +@Setter +@ToString +@Entity +public class Item { + @Id + @Column(name="item_id") + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(nullable = false, length= 50) + private String itemNm; + + @Column(name="price", nullable = false) + private int price; + + @Column(nullable = false) + private int stockNumber; + + @Lob + @Column(nullable = false) + private String itemDetail; + + @Enumerated(EnumType.STRING) + private ItemSellStatus itemSellStatus; + private LocalDateTime regTime; + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java new file mode 100644 index 0000000..1187d33 --- /dev/null +++ b/src/main/java/com/example/demo/repository/ItemRepository.java @@ -0,0 +1,11 @@ +package com.example.demo.repository; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.NoRepositoryBean; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.util.List; +import com.example.demo.entity.Item; +// @NoRepositoryBean +public interface ItemRepository extends JpaRepository<Item, Long>{ + +} \ No newline at end of file diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000..073b6e3 --- /dev/null +++ b/src/main/resources/application-test.properties @@ -0,0 +1,7 @@ +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.url=jdbc:h2:mem:test +spring.datasource.username=sa +spring.datasource.password= +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=create +spring.jpa.properties.hibernate.show_sql = true \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fbd7fa0..741d198 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,20 @@ spring.application.name=demo -server.port=3000 \ No newline at end of file +server.port=3000 + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.datasource.url=jdbc:mysql://localhost:3306/shop?useSSL=false&useUnicode=tr +ue&serverTimezone=Asia/Seoul +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=web1 +# spring.datasource.driver-class-name=org.h2.Driver +# spring.datasource.url=jdbc:h2:mem:test +# spring.datasource.username=sa +# spring.datasource.password= +# spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +# spring.jpa.hibernate.ddl-auto=create +spring.jpa.properties.hibernate.show_sql = true +spring.jpa.properties.hibernate.connection.autocommit = true +spring.jpa.properties.hibernate.format_sql = true +logging.level.org.hibernate.type.descriptor.sql = trace \ No newline at end of file diff --git a/src/test/java/com/example/demo/ItemRepositoryTest.java b/src/test/java/com/example/demo/ItemRepositoryTest.java new file mode 100644 index 0000000..6d9104a --- /dev/null +++ b/src/test/java/com/example/demo/ItemRepositoryTest.java @@ -0,0 +1,39 @@ +package com.example.demo; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import com.example.demo.entity.Item; + +import com.example.demo.repository.ItemRepository; + +import org.junit.jupiter.api.DisplayName; +import java.time.LocalDateTime; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.junit.runner.RunWith; +import com.example.demo.constant.ItemSellStatus; +import java.util.List; +import com.querydsl.jpa.impl.JPAQueryFactory; +import com.querydsl.jpa.impl.JPAQuery; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +@SpringBootTest +@TestPropertySource(locations = "classpath:application-test.properties") +@RunWith(SpringJUnit4ClassRunner.class) +public class ItemRepositoryTest { + @Autowired + ItemRepository itemRepository; + @Test + @DisplayName("상품 저장 테스트") + public void createItemTest() { + Item item = new Item(); + item.setItemNm("테스트 상품"); + item.setPrice(100000); + item.setItemDetail("테스트 상품 상세 설명"); + item.setStockNumber(100); + item.setRegTime(LocalDateTime.now()); + item.setUpdateTime(LocalDateTime.now()); + Item savedItem = itemRepository.save(item); + System.out.println(savedItem.toString()); + } +} \ No newline at end of file -- GitLab