From 033449e7dc7cfd1b362e0c4382542f7824506e05 Mon Sep 17 00:00:00 2001 From: godotg Date: Sat, 22 Oct 2022 22:28:36 +0800 Subject: [PATCH] test[boot]: boot test unit --- .../com/zfoo/boot/BootAutoConfiguration.java | 10 +-- .../test/java/com/zfoo/boot/StorageTest.java | 67 ++++++++++++++++++ .../zfoo/boot/resource/StudentResource.java | 46 ++++++++++++ .../test/resources/excel/StudentResource.xlsx | Bin 0 -> 10035 bytes boot/src/test/resources/logback-test.xml | 44 ++++++++++++ 5 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 boot/src/test/java/com/zfoo/boot/StorageTest.java create mode 100644 boot/src/test/java/com/zfoo/boot/resource/StudentResource.java create mode 100644 boot/src/test/resources/excel/StudentResource.xlsx create mode 100644 boot/src/test/resources/logback-test.xml diff --git a/boot/src/main/java/com/zfoo/boot/BootAutoConfiguration.java b/boot/src/main/java/com/zfoo/boot/BootAutoConfiguration.java index 1dbf3833..a8040f63 100644 --- a/boot/src/main/java/com/zfoo/boot/BootAutoConfiguration.java +++ b/boot/src/main/java/com/zfoo/boot/BootAutoConfiguration.java @@ -14,15 +14,12 @@ package com.zfoo.boot; import com.fasterxml.jackson.databind.ObjectMapper; import com.zfoo.protocol.util.JsonUtils; -import com.zfoo.protocol.util.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import java.lang.reflect.Field; - /** * @author godotg * @version 3.0 @@ -34,12 +31,9 @@ public class BootAutoConfiguration { @Bean @ConditionalOnMissingBean - public ObjectMapper getObjectMapper() throws NoSuchFieldException { - // 拿到JsonUtils中的ObjectMapper - Field field = JsonUtils.class.getDeclaredField("MAPPER"); - ReflectionUtils.makeAccessible(field); + public ObjectMapper getObjectMapper() { logger.info("Jackson auto config successfully!"); - return (ObjectMapper) ReflectionUtils.getField(field, null); + return JsonUtils.MAPPER; } } diff --git a/boot/src/test/java/com/zfoo/boot/StorageTest.java b/boot/src/test/java/com/zfoo/boot/StorageTest.java new file mode 100644 index 00000000..eb348354 --- /dev/null +++ b/boot/src/test/java/com/zfoo/boot/StorageTest.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2020 The zfoo Authors + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ + +package com.zfoo.boot; + +import com.zfoo.boot.resource.StudentResource; +import com.zfoo.protocol.util.JsonUtils; +import com.zfoo.storage.StorageContext; +import com.zfoo.storage.model.config.StorageConfig; +import com.zfoo.storage.model.vo.Storage; +import com.zfoo.util.ThreadUtils; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.core.env.Environment; + +/** + * @author godotg + * @version 3.0 + */ +@Ignore +@SpringBootApplication(exclude = { + // 排除MongoDB自动配置 + MongoAutoConfiguration.class +}) +public class StorageTest { + + private static final Logger logger = LoggerFactory.getLogger(StorageTest.class); + + @Bean + public StorageConfig storageConfig(Environment environment) { + var config = new StorageConfig(); + config.setScanPackage("com.zfoo.boot"); + config.setResourceLocation("classpath:/excel"); + config.setWriteable(true); + return config; + } + + @Test + public void startApplication() { + var springBoot = new SpringApplicationBuilder(); + springBoot.sources(StorageTest.class).web(WebApplicationType.NONE).run(); + + var storage = (Storage) StorageContext.getStorageManager().getStorage(StudentResource.class); + for (StudentResource resource : storage.getAll()) { + logger.info(JsonUtils.object2String(resource)); + } + + ThreadUtils.sleep(Long.MAX_VALUE); + } + +} diff --git a/boot/src/test/java/com/zfoo/boot/resource/StudentResource.java b/boot/src/test/java/com/zfoo/boot/resource/StudentResource.java new file mode 100644 index 00000000..e372b9f4 --- /dev/null +++ b/boot/src/test/java/com/zfoo/boot/resource/StudentResource.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2020 The zfoo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ + +package com.zfoo.boot.resource; + +import com.zfoo.protocol.IPacket; +import com.zfoo.storage.model.anno.Id; +import com.zfoo.storage.model.anno.Resource; + +/** + * @author godotg + * @version 4.0 + */ +@Resource +public class StudentResource implements IPacket { + + @Id + public int id; + + public String name; + public int age; + public float score; + public String[] courses; + public User[] users; + public User user; + +} + +class User implements IPacket { + + public String id; + public String name; + public String sex; + public int age; + +} diff --git a/boot/src/test/resources/excel/StudentResource.xlsx b/boot/src/test/resources/excel/StudentResource.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d7378b7a60000be9ed5a13782afd0f5c7adfa986 GIT binary patch literal 10035 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 W72qH~2mqi!el!p_zW7NW!2ba{XC@B- literal 0 HcmV?d00001 diff --git a/boot/src/test/resources/logback-test.xml b/boot/src/test/resources/logback-test.xml new file mode 100644 index 00000000..fadb70c5 --- /dev/null +++ b/boot/src/test/resources/logback-test.xml @@ -0,0 +1,44 @@ + + + + + com.zfoo.boot + + + + + + + + ${PATTERN_CONSOLE} + UTF-8 + + + + + + + + + + + + + + + + + + + + + +