Browse Source

优化单元测试

zhouhao 5 years ago
parent
commit
284af44a06
15 changed files with 56 additions and 107 deletions
  1. 2 3
      hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/AutoDDLProcessor.java
  2. 10 17
      hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java
  3. 2 3
      hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/SyncRepositoryFactoryBean.java
  4. 3 3
      hsweb-concurrent/hsweb-concurrent-cache/src/main/java/org/hswebframework/web/cache/configuration/ReactiveCacheProperties.java
  5. 2 0
      hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/CaffeineReactiveCacheManagerTest.java
  6. 2 0
      hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/GuavaReactiveCacheManagerTest.java
  7. 12 8
      hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/RedisReactiveCacheManagerTest.java
  8. 1 1
      hsweb-concurrent/hsweb-concurrent-cache/src/test/resources/application-redis.yml
  9. 2 2
      hsweb-core/src/test/java/org/hswebframework/web/logger/ReactiveLoggerTest.java
  10. 5 0
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/DefaultReactiveAuthenticationManagerTest.java
  11. 7 2
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/DefaultReactiveUserServiceTest.java
  12. 1 0
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/WebFluxPermissionControllerTest.java
  13. 0 46
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/sync/DefaultUserServiceTest.java
  14. 0 21
      hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/sync/TestApplication.java
  15. 7 1
      pom.xml

+ 2 - 3
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/AutoDDLProcessor.java

@@ -41,7 +41,6 @@ public class AutoDDLProcessor implements InitializingBean {
     public void afterPropertiesSet() {
         if(entityFactory instanceof MapperEntityFactory){
             MapperEntityFactory factory= ((MapperEntityFactory) entityFactory);
-
             for (EntityInfo entity : entities) {
                 factory.addMapping(entity.getEntityType(),MapperEntityFactory.defaultMapper(entity.getRealType()));
             }
@@ -52,12 +51,12 @@ public class AutoDDLProcessor implements InitializingBean {
                 Flux.fromIterable(entities)
                         .doOnNext(type -> log.info("auto ddl for {}", type))
                         .map(resolver::resolve)
-                        .flatMap(meta -> operator.ddl().createOrAlter(meta).commit().reactive())
+                        .concatMap(meta -> operator.ddl().createOrAlter(meta).commit().reactive())
                         .onErrorContinue((err, a) -> log.warn(err.getMessage(), err))
                         .then()
                         .block();
             }else{
-                for (Class entity : entities) {
+                for (Class<?> entity : entities) {
                     log.warn("auto ddl for {}", entity);
                     try {
                         operator.ddl()

+ 10 - 17
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java

@@ -47,13 +47,7 @@ public class EasyormRepositoryRegistrar implements ImportBeanDefinitionRegistrar
         if (attr == null) {
             return;
         }
-        boolean reactivePrecent = false;
-        try {
-            Class.forName("io.r2dbc.spi.ConnectionFactory");
-            reactivePrecent = true;
-        } catch (Exception e) {
-
-        }
+        boolean reactivePrecent = org.springframework.util.ClassUtils.isPresent("io.r2dbc.spi.ConnectionFactory", this.getClass().getClassLoader());
         String[] arr = (String[]) attr.get("value");
         String path = Arrays.stream(arr)
                 .map(str -> ResourcePatternResolver
@@ -126,18 +120,17 @@ public class EasyormRepositoryRegistrar implements ImportBeanDefinitionRegistrar
                 definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
                 definition.getPropertyValues().add("entityType", realType);
                 registry.registerBeanDefinition(realType.getSimpleName().concat("ReactiveRepository"), definition);
+            } else {
+                log.debug("register SyncRepository<{},{}>", entityType.getName(), idType.getSimpleName());
+                ResolvableType repositoryType = ResolvableType.forClassWithGenerics(DefaultSyncRepository.class, entityType, idType);
+                RootBeanDefinition definition = new RootBeanDefinition();
+                definition.setTargetType(repositoryType);
+                definition.setBeanClass(SyncRepositoryFactoryBean.class);
+                definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
+                definition.getPropertyValues().add("entityType", realType);
+                registry.registerBeanDefinition(realType.getSimpleName().concat("SyncRepository"), definition);
             }
 
-            log.debug("register SyncRepository<{},{}>", entityType.getName(), idType.getSimpleName());
-
-            ResolvableType repositoryType = ResolvableType.forClassWithGenerics(DefaultSyncRepository.class, entityType, idType);
-
-            RootBeanDefinition definition = new RootBeanDefinition();
-            definition.setTargetType(repositoryType);
-            definition.setBeanClass(SyncRepositoryFactoryBean.class);
-            definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
-            definition.getPropertyValues().add("entityType", realType);
-            registry.registerBeanDefinition(realType.getSimpleName().concat("SyncRepository"), definition);
         }
 
 

+ 2 - 3
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/SyncRepositoryFactoryBean.java

@@ -13,18 +13,17 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class SyncRepositoryFactoryBean<E, PK>
         implements FactoryBean<SyncRepository<E, PK>> {
 
-
     @Autowired
     private DatabaseOperator operator;
 
     @Autowired
     private EntityTableMetadataResolver resolver;
 
-    private Class<E> entityType;
-
     @Autowired
     private EntityResultWrapperFactory wrapperFactory;
 
+    private Class<E> entityType;
+
     @Override
     public SyncRepository<E, PK> getObject() {
 

+ 3 - 3
hsweb-concurrent/hsweb-concurrent-cache/src/main/java/org/hswebframework/web/cache/configuration/ReactiveCacheProperties.java

@@ -68,7 +68,7 @@ public class ReactiveCacheProperties {
             } else {
                 operations = (ReactiveRedisOperations) context.getBeanProvider(ResolvableType.forClassWithGenerics(ReactiveRedisOperations.class, Object.class, Object.class)).getIfAvailable();
             }
-            return new RedisLocalReactiveCacheManager(operations, createCacheManager(type));
+            return new RedisLocalReactiveCacheManager(operations, createCacheManager(redis.localCacheType));
         }
 
         return createCacheManager(type);
@@ -110,7 +110,7 @@ public class ReactiveCacheProperties {
         }
 
         CacheBuilder<Object, Object> createBuilder() {
-            CacheBuilder builder = CacheBuilder.newBuilder()
+            CacheBuilder<Object,Object> builder = CacheBuilder.newBuilder()
                     .expireAfterAccess(expireAfterAccess)
                     .expireAfterWrite(expireAfterWrite)
                     .maximumSize(maximumSize);
@@ -141,7 +141,7 @@ public class ReactiveCacheProperties {
         }
 
         Caffeine<Object, Object> createBuilder() {
-            Caffeine builder = Caffeine.newBuilder()
+            Caffeine<Object,Object> builder = Caffeine.newBuilder()
                     .expireAfterAccess(expireAfterAccess)
                     .expireAfterWrite(expireAfterWrite)
                     .maximumSize(maximumSize);

+ 2 - 0
hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/CaffeineReactiveCacheManagerTest.java

@@ -7,6 +7,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -17,6 +18,7 @@ import reactor.test.StepVerifier;
         "--hsweb.cache.type=caffeine"
 })
 @RunWith(SpringRunner.class)
+@DirtiesContext
 public class CaffeineReactiveCacheManagerTest {
 
     @Autowired

+ 2 - 0
hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/GuavaReactiveCacheManagerTest.java

@@ -7,6 +7,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -17,6 +18,7 @@ import reactor.test.StepVerifier;
         "--hsweb.cache.type=guava"
 })
 @RunWith(SpringRunner.class)
+@DirtiesContext
 public class GuavaReactiveCacheManagerTest {
 
     @Autowired

+ 12 - 8
hsweb-concurrent/hsweb-concurrent-cache/src/test/java/org/hswebframework/web/cache/RedisReactiveCacheManagerTest.java

@@ -3,11 +3,14 @@ package org.hswebframework.web.cache;
 import org.hswebframework.web.cache.supports.RedisLocalReactiveCacheManager;
 import org.hswebframework.web.cache.supports.RedisReactiveCache;
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit4.rules.SpringClassRule;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.test.StepVerifier;
@@ -15,38 +18,39 @@ import reactor.test.StepVerifier;
 import static org.junit.Assert.*;
 
 
-@SpringBootTest(classes = TestApplication.class,args = {
+@SpringBootTest(classes = TestApplication.class, args = {
         "--hsweb.cache.type=redis"
 })
 @RunWith(SpringRunner.class)
+@DirtiesContext
 public class RedisReactiveCacheManagerTest {
 
     @Autowired
     ReactiveCacheManager cacheManager;
 
     @Test
-    public void test(){
+    public void test() {
         Assert.assertNotNull(cacheManager);
         Assert.assertTrue(cacheManager instanceof RedisLocalReactiveCacheManager);
 
-        ReactiveCache<String> cache= cacheManager.getCache("test");
+        ReactiveCache<String> cache = cacheManager.getCache("test");
         cache.clear()
                 .as(StepVerifier::create)
                 .verifyComplete();
 
         cache.flux("test-flux")
-                .onCacheMissResume(Flux.just("1","2","3"))
+                .onCacheMissResume(Flux.just("1", "2", "3"))
                 .as(StepVerifier::create)
-                .expectNext("1","2","3")
+                .expectNext("1", "2", "3")
                 .verifyComplete();
 
-        cache.put("test-flux",Flux.just("3","2","1"))
+        cache.put("test-flux", Flux.just("3", "2", "1"))
                 .as(StepVerifier::create)
                 .verifyComplete();
 
         cache.getFlux("test-flux")
                 .as(StepVerifier::create)
-                .expectNext("3","2","1")
+                .expectNext("3", "2", "1")
                 .verifyComplete();
 
 
@@ -56,7 +60,7 @@ public class RedisReactiveCacheManagerTest {
                 .expectNext("1")
                 .verifyComplete();
 
-        cache.put("test-mono",Mono.just("2"))
+        cache.put("test-mono", Mono.just("2"))
                 .as(StepVerifier::create)
                 .verifyComplete();
 

+ 1 - 1
hsweb-concurrent/hsweb-concurrent-cache/src/test/resources/application-redis.yml

@@ -1,5 +1,5 @@
 hsweb:
   cache:
     redis:
-      local-cache-type: none
+      local-cache-type: caffeine
     type: redis

+ 2 - 2
hsweb-core/src/test/java/org/hswebframework/web/logger/ReactiveLoggerTest.java

@@ -17,7 +17,7 @@ public class ReactiveLoggerTest {
     public void test() {
 
         Flux.range(0, 5)
-                .delayElements(Duration.ofSeconds(2))
+                .delayElements(Duration.ofSeconds(1))
                 .flatMap(i -> ReactiveLogger.mdc("requestId", "test").thenReturn(i))
                 .doOnEach(ReactiveLogger.onNext(v -> {
                     log.info("test:{}", v);
@@ -33,7 +33,7 @@ public class ReactiveLoggerTest {
     @Test
     public void testHandle() {
         Flux.range(0, 5)
-                .delayElements(Duration.ofSeconds(2))
+                .delayElements(Duration.ofSeconds(1))
                 .flatMap(i -> ReactiveLogger.mdc("requestId", "test").thenReturn(i))
                 .handle(ReactiveLogger.handle((o, fluxSink) -> {
                     log.info("test:{}", fluxSink.currentContext());

+ 5 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/DefaultReactiveAuthenticationManagerTest.java

@@ -14,6 +14,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 import reactor.core.publisher.Mono;
 import reactor.test.StepVerifier;
@@ -92,6 +93,10 @@ public class DefaultReactiveAuthenticationManagerTest {
                 .as(StepVerifier::create)
                 .expectNext(true)
                 .verifyComplete();
+        userService.deleteUser(entity.getId())
+                .as(StepVerifier::create)
+                .expectNext(true)
+                .verifyComplete();
 
     }
 

+ 7 - 2
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/DefaultReactiveUserServiceTest.java

@@ -7,6 +7,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 import reactor.core.publisher.Mono;
 import reactor.test.StepVerifier;
@@ -49,11 +50,15 @@ public class DefaultReactiveUserServiceTest {
                 .expectNext(true)
                 .verifyComplete();
 
-         userService.findByUsernameAndPassword("admin", "admin")
+        userService.findByUsernameAndPassword("admin", "admin")
                 .as(StepVerifier::create)
-                 .expectNextCount(1)
+                .expectNextCount(1)
                 .verifyComplete();
 
+        userService.deleteUser(userEntity.getId())
+                .as(StepVerifier::create)
+                .expectNext(true)
+                .verifyComplete();
 
     }
 

+ 1 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/WebFluxPermissionControllerTest.java

@@ -20,6 +20,7 @@ import org.springframework.boot.autoconfigure.transaction.reactive.ReactiveTrans
 import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.reactive.server.WebTestClient;
 import org.springframework.transaction.annotation.EnableTransactionManagement;

+ 0 - 46
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/sync/DefaultUserServiceTest.java

@@ -1,46 +0,0 @@
-package org.hswebframework.web.system.authorization.defaults.service.sync;
-
-import org.hswebframework.web.system.authorization.api.entity.UserEntity;
-import org.hswebframework.web.system.authorization.api.service.UserService;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class)
-public class DefaultUserServiceTest {
-
-    @Autowired
-    private UserService userService;
-
-    @Test
-    public void testCrud() {
-        UserEntity userEntity = new UserEntity();
-        userEntity.setName("test");
-        userEntity.setUsername("admin");
-        userEntity.setPassword("admin");
-
-        Assert.assertTrue(userService.saveUser(userEntity));
-
-        Assert.assertNotNull(userEntity.getId());
-
-        userEntity.setUsername("admin2");
-        userEntity.setPassword("admin2");
-        userService.saveUser(userEntity);
-
-        userService.changeState(userEntity.getId(), (byte) 1);
-
-        userService.changePassword(userEntity.getId(),"admin2","admin");
-
-        UserEntity entity = userService.findByUsernameAndPassword("admin", "admin").orElseThrow(NullPointerException::new);
-
-        Assert.assertEquals(entity.getName(), userEntity.getName());
-
-        Assert.assertEquals(entity.getStatus().byteValue(), (byte) 1);
-
-    }
-
-}

+ 0 - 21
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/sync/TestApplication.java

@@ -1,21 +0,0 @@
-package org.hswebframework.web.system.authorization.defaults.service.sync;
-
-import org.hswebframework.web.crud.configuration.R2dbcSqlExecutorConfiguration;
-import org.hswebframework.web.system.authorization.defaults.service.DefaultUserService;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-
-@SpringBootApplication(exclude = {
-        R2dbcSqlExecutorConfiguration.class
-})
-public class TestApplication {
-
-
-    @Bean
-    public DefaultUserService defaultUserService(){
-
-        return new DefaultUserService();
-    }
-
-}

+ 7 - 1
pom.xml

@@ -86,7 +86,7 @@
         <activiti.version>5.19.0.2</activiti.version>
 
         <fastjson.version>1.2.47</fastjson.version>
-        <h2.version>1.4.191</h2.version>
+        <h2.version>1.4.200</h2.version>
         <mysql.version>5.1.39</mysql.version>
         <cglib.version>3.2.2</cglib.version>
         <aspectj.version>1.6.12</aspectj.version>
@@ -359,6 +359,12 @@
                 <scope>test</scope>
             </dependency>
 
+            <dependency>
+                <groupId>com.h2database</groupId>
+                <artifactId>h2</artifactId>
+                <version>${h2.version}</version>
+            </dependency>
+
             <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>fastjson</artifactId>