From 3a8d6e114c55e75d72e52b435862af244fb2dd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E8=8B=B1?= Date: Sun, 1 Apr 2018 13:19:52 +0800 Subject: [PATCH] opt test --- .../jarslink/api/impl/ModuleManagerImpl.java | 30 ++- .../jarslink/api/impl/RuntimeModule.java | 3 + .../AbstractModuleRefreshSchedulerTest.java | 8 +- .../api/impl/ModuleLoaderImplTest.java | 169 +++++++++++++++- .../jarslink/api/impl/ModuleManagerTest.java | 180 +++--------------- .../jarslink/api/impl/ModuleServiceTest.java | 6 +- 6 files changed, 224 insertions(+), 172 deletions(-) diff --git a/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/ModuleManagerImpl.java b/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/ModuleManagerImpl.java index 905eb29..61f00f5 100644 --- a/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/ModuleManagerImpl.java +++ b/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/ModuleManagerImpl.java @@ -51,8 +51,9 @@ public class ModuleManagerImpl implements ModuleManager, DisposableBean { */ private final ConcurrentHashMap allModules = new ConcurrentHashMap(); - RuntimeModule getRuntimeModule(String name) { - return allModules.get(name.toUpperCase()); + private RuntimeModule getRuntimeModule(String name) { + RuntimeModule runtimeModule = allModules.get(name.toUpperCase()); + return runtimeModule != null ? runtimeModule : new RuntimeModule(); } @Override @@ -60,7 +61,7 @@ public List getModules() { List modules = Lists.newArrayList(); for (String name : allModules.keySet()) { - RuntimeModule runtimeModule = getRuntimeModule(name); + RuntimeModule runtimeModule = getRuntimeModule((String) name); for (String version : runtimeModule.getModules().keySet()) { modules.add(runtimeModule.getModules().get(version)); } @@ -78,20 +79,20 @@ public Module find(String name) { return find(name, defaultVersion); } - private String getDefaultVersion(String name) {return getRuntimeModule(name).getDefaultVersion();} + private String getDefaultVersion(String name) {return getRuntimeModule((String) name).getDefaultVersion();} @Override public Module find(String name, String version) { checkNotNull(name, "module name is null"); checkNotNull(version, "module version is null"); - return getRuntimeModule(name).getModule(version); + return getRuntimeModule((String) name).getModule(version); } @Override public void activeVersion(String name, String version) { checkNotNull(name, "module name is null"); checkNotNull(version, "module version is null"); - getRuntimeModule(name).setDefaultVersion(version); + getRuntimeModule((String) name).setDefaultVersion(version); } @Override @@ -109,14 +110,23 @@ public Module register(Module module) { LOGGER.info("register Module: {}-{}", name, version); } + //same module and same version can not register + Module registeredModule = getRuntimeModule(name).getModule(version); + if (registeredModule != null) { + return null; + } + RuntimeModule runtimeModule = getRuntimeModule(name); Module oldModule = null; - if (runtimeModule == null) { + //module frist register + if (runtimeModule.getModules().isEmpty()) { runtimeModule = new RuntimeModule().withName(name).withDefaultVersion(version).addModule(module); allModules.put(name.toUpperCase(), runtimeModule); } else { + //the same module to register again oldModule = runtimeModule.getDefaultModule(); runtimeModule.addModule(module).setDefaultVersion(version); + // remove module old version if (oldModule != null && module.getModuleConfig().isNeedUnloadOldVersion() && !runtimeModule.getModules().isEmpty()) { runtimeModule.getModules().remove(oldModule.getVersion()); } @@ -131,14 +141,14 @@ public Module remove(String name) { if (LOGGER.isInfoEnabled()) { LOGGER.info("Remove Module: {}", name); } - return remove(name, getRuntimeModule(name).getDefaultVersion()); + return remove(name, getRuntimeModule((String) name).getDefaultVersion()); } @Override public Module remove(String name, String version) { checkNotNull(name, "module name is null"); checkNotNull(version, "module version is null"); - return getRuntimeModule(name).getModules().remove(version); + return getRuntimeModule((String) name).getModules().remove(version); } @Override @@ -159,7 +169,7 @@ public Map getErrorModuleContext() { Map result = Maps.newHashMap(); for (String name : allModules.keySet()) { - RuntimeModule runtimeModule = getRuntimeModule(name); + RuntimeModule runtimeModule = getRuntimeModule((String) name); result.put(name, runtimeModule.getErrorContext()); } diff --git a/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/RuntimeModule.java b/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/RuntimeModule.java index 5d21ff9..4f8fd0e 100644 --- a/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/RuntimeModule.java +++ b/jarslink-api/src/main/java/com/alipay/jarslink/api/impl/RuntimeModule.java @@ -26,6 +26,9 @@ public class RuntimeModule extends ToStringObject { */ private String errorContext; + /** + * all version module,key:version + */ private ConcurrentHashMap modules = new ConcurrentHashMap(); public Module getModule(String version) { diff --git a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/AbstractModuleRefreshSchedulerTest.java b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/AbstractModuleRefreshSchedulerTest.java index e58a3ed..537438b 100644 --- a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/AbstractModuleRefreshSchedulerTest.java +++ b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/AbstractModuleRefreshSchedulerTest.java @@ -32,6 +32,8 @@ import java.util.ArrayList; +import static com.alipay.jarslink.api.impl.ModuleLoaderImplTest.buildModuleConfig; + /** * JarsLink API入口,使用TITAN API必须继承AbstractModuleRefreshScheduler然后提供模块信息 * @@ -59,7 +61,7 @@ public void init() { @Test public void shouldAddModule() { //装载模块 - abstractModuleRefreshSchedulerImpl.setModuleConfigs(ImmutableList.of(ModuleManagerTest.buildModuleConfig())); + abstractModuleRefreshSchedulerImpl.setModuleConfigs(ImmutableList.of(buildModuleConfig())); Assert.assertEquals(1, abstractModuleRefreshSchedulerImpl.queryModuleConfigs().size()); abstractModuleRefreshSchedulerImpl.run(); Module demo = moduleManager.find("demo"); @@ -82,7 +84,7 @@ public void shouldAddModule() { @Test public void shouldUpdateModule() { //装载模块 - abstractModuleRefreshSchedulerImpl.setModuleConfigs(ImmutableList.of(ModuleManagerTest.buildModuleConfig + abstractModuleRefreshSchedulerImpl.setModuleConfigs(ImmutableList.of(buildModuleConfig (true))); Assert.assertEquals(1, abstractModuleRefreshSchedulerImpl.queryModuleConfigs().size()); abstractModuleRefreshSchedulerImpl.run(); @@ -90,7 +92,7 @@ public void shouldUpdateModule() { Assert.assertNotNull(demo.getAction("helloworld")); //修改模块 - ModuleConfig moduleConfig = ModuleManagerTest.buildModuleConfig(true); + ModuleConfig moduleConfig = buildModuleConfig(true); moduleConfig.setVersion("1.1"); abstractModuleRefreshSchedulerImpl.setModuleConfigs(ImmutableList.of(moduleConfig)); abstractModuleRefreshSchedulerImpl.run(); diff --git a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleLoaderImplTest.java b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleLoaderImplTest.java index b7cf33c..4f59472 100644 --- a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleLoaderImplTest.java +++ b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleLoaderImplTest.java @@ -4,8 +4,11 @@ */ package com.alipay.jarslink.api.impl; +import com.alipay.jarslink.api.Action; import com.alipay.jarslink.api.Module; +import com.alipay.jarslink.api.ModuleConfig; import com.alipay.jarslink.api.ModuleLoader; +import com.google.common.collect.ImmutableList; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -13,7 +16,9 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static com.alipay.jarslink.api.impl.ModuleManagerTest.buildModuleConfig; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; /** * @@ -24,6 +29,8 @@ @ContextConfiguration(locations = {"classpath*:META-INF/spring/jarslink.xml"}) public class ModuleLoaderImplTest { + public static final String JARSLINK_MODULE_DEMO = "jarslink-module-demo-1.0.0.jar"; + @Autowired private ModuleLoader moduleLoader; @@ -58,12 +65,170 @@ public void shouldLoadMultiModule() { } + @Test + public void shouldDoAction() { + + Module module = loadModule(); + String actionName = "helloworld"; + + //4.1:查找和执行Action + ModuleConfig moduleConfig = new ModuleConfig(); + moduleConfig.setName("h"); + moduleConfig.setEnabled(true); + + ModuleConfig result = module.doAction(actionName, moduleConfig); + Assert.assertEquals(3, module.getActions().size()); + Assert.assertNotNull(result); + Assert.assertEquals(result.getName(), moduleConfig.getName()); + Assert.assertEquals(result.getEnabled(), moduleConfig.getEnabled()); + + //4.2:查找和执行Action + Action action = module.getAction(actionName); + Assert.assertNotNull(action); + result = action.execute(moduleConfig); + Assert.assertNotNull(result); + Assert.assertEquals(result.getName(), moduleConfig.getName()); + Assert.assertEquals(result.getEnabled(), moduleConfig.getEnabled()); + + //卸载模块 + moduleLoader.unload(module); + Assert.assertTrue(module.getActions().isEmpty()); + } + + @Test + public void shouldDoOverrideAction() { + //测试注解action被xml中的action覆盖 + ModuleConfig config = buildModuleConfig(true); + config.addScanPackage("com.alipay.jarslink.main").addScanPackage("com.alipay.jarslink.demo"); + + Module module = moduleLoader.load(config); + Action action = null; + try { + action = module.getAction("overrideXmlAction"); + } catch (Exception e) { + Assert.assertNotNull(e); + } + Assert.assertNull(action); + } + + @Test + public void shouldDoAnnotationAction() { + //annotation方式加载,测试annotation中注入xml定义的action 同时测试annotation action和xmlaction同时加载 + ModuleConfig config = buildModuleConfig(true); + config.addScanPackage("com.alipay.jarslink.main"); + config.addScanPackage("com.alipay.jarslink.demo"); + + Module module = moduleLoader.load(config); + Assert.assertEquals(4, module.getActions().size()); + + //获取annotationAction 该action中注入xml中定义的xmlAction,使用xmlAction的实现 + String result = module.doAction("annotationAction", "hello"); + Assert.assertNotNull(result); + //实际结果为xmlAction返回,annotationAction作为代理 + Assert.assertEquals(result, "xml:hello"); + + //4.2:查找和执行Action + Action action = module.getAction("annotationAction"); + Assert.assertNotNull(action); + result = action.execute("hello"); + Assert.assertNotNull(result); + Assert.assertEquals(result, "xml:hello"); + + //查找和执行xml bean + result = module.doAction("xmlAction", "hello"); + Assert.assertNotNull(result); + Assert.assertEquals(result, "xml:hello"); + + //4.2:查找和执行Action + action = module.getAction("xmlAction"); + Assert.assertNotNull(action); + result = action.execute("hello"); + Assert.assertNotNull(result); + Assert.assertEquals(result, "xml:hello"); + + //卸载模块 + moduleLoader.unload(module); + Assert.assertTrue(module.getActions().isEmpty()); + } + + @Test + public void shouldDoXmlAction() { + //xml的方式加载 + ModuleConfig config = buildModuleConfig(true); + + Module module = moduleLoader.load(config); + Assert.assertEquals(3, module.getActions().size()); + //4.2:查找annotation Action 因为xml没有配置该action所以不会被发现 + Action action = null; + try { + action = module.getAction("annotationAction"); + } catch (NullPointerException e) { + //由于找不到action所以会抛异常 + Assert.assertNotNull(e); + } + Assert.assertNull(action); + + //查找和执行xml bean + String result = module.doAction("xmlAction", "hello"); + Assert.assertNotNull(result); + Assert.assertEquals(result, "xml:hello"); + + //4.2:查找和执行Action + action = module.getAction("xmlAction"); + Assert.assertNotNull(action); + result = action.execute("hello"); + Assert.assertNotNull(result); + Assert.assertEquals(result, "xml:hello"); + + //卸载模块 + moduleLoader.unload(module); + Assert.assertTrue(module.getActions().isEmpty()); + } + + /** + * 构建模块配置信息 + */ + public static ModuleConfig buildModuleConfig() { + return buildModuleConfig(true); + } + + public static ModuleConfig buildModuleConfig(boolean enabled) { + return buildModuleConfig("demo", "1.0.0.20170621", enabled); + } + + public static ModuleConfig buildModuleConfig(String name, boolean enabled) { + return buildModuleConfig(name, "1.0.0.20170621", enabled); + } + + public static ModuleConfig buildModuleConfig(String name, String version, boolean enabled) { + URL demoModule; + ModuleConfig moduleConfig = new ModuleConfig(); + //通过该方法构建的配置都是使用注解形式扫描bean的 + String scanBase = "com.alipay.jarslink.main"; + moduleConfig.addScanPackage(scanBase); + moduleConfig.removeScanPackage(scanBase); + Map properties = new HashMap(); + moduleConfig.withEnabled(enabled).withVersion("1.0.0.20170621").withOverridePackages(ImmutableList.of( + "com.alipay.jarslink.demo")).withProperties(properties); + demoModule = Thread.currentThread().getContextClassLoader().getResource(JARSLINK_MODULE_DEMO); + + moduleConfig.setOverridePackages(ImmutableList.of("com.alipay.jarslink.demo")); + + moduleConfig.setName(name); + moduleConfig.setEnabled(enabled); + moduleConfig.setVersion("1.0.0.20170621"); + properties.put("url", "127.0.0.1"); + moduleConfig.setProperties(properties); + moduleConfig.setModuleUrl(ImmutableList.of(demoModule)); + return moduleConfig; + } + private Module loadModule() { return moduleLoader.load(buildModuleConfig(true)); } private Module loadModule(String name) { - return moduleLoader.load(buildModuleConfig(name, true)); + return moduleLoader.load(buildModuleConfig(name, "1.0.0.20170621", true)); } } \ No newline at end of file diff --git a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleManagerTest.java b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleManagerTest.java index b4c410f..de4d7ea 100644 --- a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleManagerTest.java +++ b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleManagerTest.java @@ -17,12 +17,9 @@ */ package com.alipay.jarslink.api.impl; -import com.alipay.jarslink.api.Action; import com.alipay.jarslink.api.Module; -import com.alipay.jarslink.api.ModuleConfig; import com.alipay.jarslink.api.ModuleLoader; import com.alipay.jarslink.api.ModuleManager; -import com.google.common.collect.ImmutableList; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,9 +28,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; + +import static com.alipay.jarslink.api.impl.ModuleLoaderImplTest.buildModuleConfig; /** * 模块加载和执行测试 @@ -47,53 +43,25 @@ @ContextConfiguration(locations = {"classpath*:META-INF/spring/jarslink.xml"}) public class ModuleManagerTest { - public static final String JARSLINK_MODULE_DEMO = "jarslink-module-demo-1.0.0.jar"; - @Autowired private ModuleManager moduleManager; @Autowired private ModuleLoader moduleLoader; - @Test - public void shouldDoAction() { - - Module module = loadModule(); - String actionName = "helloworld"; - - moduleManager.register(module); - //4.1:查找和执行Action - - ModuleConfig moduleConfig = new ModuleConfig(); - moduleConfig.setName("h"); - moduleConfig.setEnabled(true); - - ModuleConfig result = module.doAction(actionName, moduleConfig); - Assert.assertEquals(3, module.getActions().size()); - Assert.assertNotNull(result); - Assert.assertEquals(result.getName(), moduleConfig.getName()); - Assert.assertEquals(result.getEnabled(), moduleConfig.getEnabled()); - - //4.2:查找和执行Action - Action action = module.getAction(actionName); - Assert.assertNotNull(action); - result = action.execute(moduleConfig); - Assert.assertNotNull(result); - Assert.assertEquals(result.getName(), moduleConfig.getName()); - Assert.assertEquals(result.getEnabled(), moduleConfig.getEnabled()); - - //卸载模块 - removeModule(module); - } - @Test public void shouldRegisterModule() throws MalformedURLException { - //2:注册模块 - Module module = loadModule(); + //注册一个模块 + Module module = loadModule("demo", "1.0"); Module removedModule = moduleManager.register(module); Assert.assertNull(removedModule); - //3:查找模块 + ////再注册同一个模块不同版本,会卸载旧的模块 + Module newModule = loadModule("demo", "2.0"); + removedModule = moduleManager.register(newModule); + Assert.assertEquals(1, moduleManager.getModules().size()); + + //查找模块 Module findModule = moduleManager.find(module.getName()); Assert.assertNotNull(findModule); @@ -109,119 +77,17 @@ public void shouldRegisterModule() throws MalformedURLException { } @Test - public void shouldDoOverrideAction() { - //测试注解action被xml中的action覆盖 - ModuleConfig config = buildModuleConfig(true); - config.addScanPackage("com.alipay.jarslink.main").addScanPackage("com.alipay.jarslink.demo"); - - Module module = moduleLoader.load(config); - Action action = null; - try { - action = module.getAction("overrideXmlAction"); - } catch (Exception e) { - Assert.assertNotNull(e); - } - Assert.assertNull(action); - } - - @Test - public void shouldDoAnnotationAction() { - //annotation方式加载,测试annotation中注入xml定义的action 同时测试annotation action和xmlaction同时加载 - ModuleConfig config = buildModuleConfig(true); - config.addScanPackage("com.alipay.jarslink.main"); - config.addScanPackage("com.alipay.jarslink.demo"); - - Module module = moduleLoader.load(config); - Assert.assertEquals(4, module.getActions().size()); - - //获取annotationAction 该action中注入xml中定义的xmlAction,使用xmlAction的实现 - String result = module.doAction("annotationAction", "hello"); - Assert.assertNotNull(result); - //实际结果为xmlAction返回,annotationAction作为代理 - Assert.assertEquals(result, "xml:hello"); - - //4.2:查找和执行Action - Action action = module.getAction("annotationAction"); - Assert.assertNotNull(action); - result = action.execute("hello"); - Assert.assertNotNull(result); - Assert.assertEquals(result, "xml:hello"); - - //查找和执行xml bean - result = module.doAction("xmlAction", "hello"); - Assert.assertNotNull(result); - Assert.assertEquals(result, "xml:hello"); - - //4.2:查找和执行Action - action = module.getAction("xmlAction"); - Assert.assertNotNull(action); - result = action.execute("hello"); - Assert.assertNotNull(result); - Assert.assertEquals(result, "xml:hello"); - } - - @Test - public void shouldDoXmlAction() { - //xml的方式加载 - ModuleConfig config = buildModuleConfig(true); - - Module module = moduleLoader.load(config); - Assert.assertEquals(3, module.getActions().size()); - //4.2:查找annotation Action 因为xml没有配置该action所以不会被发现 - Action action = null; - try { - action = module.getAction("annotationAction"); - } catch (NullPointerException e) { - //由于找不到action所以会抛异常 - Assert.assertNotNull(e); - } - Assert.assertNull(action); - - //查找和执行xml bean - String result = module.doAction("xmlAction", "hello"); - Assert.assertNotNull(result); - Assert.assertEquals(result, "xml:hello"); - - //4.2:查找和执行Action - action = module.getAction("xmlAction"); - Assert.assertNotNull(action); - result = action.execute("hello"); - Assert.assertNotNull(result); - Assert.assertEquals(result, "xml:hello"); - } - - /** - * 构建模块配置信息 - */ - public static ModuleConfig buildModuleConfig() { - return buildModuleConfig(true); - } - - public static ModuleConfig buildModuleConfig(boolean enabled) { - return buildModuleConfig("demo", enabled); - } + public void shouldNotRegisterSameVersionModule() { + //注册一个模块 + Module module = loadModule(); + Module removedModule = moduleManager.register(module); + Assert.assertNull(removedModule); + Assert.assertEquals(1, moduleManager.getModules().size()); - public static ModuleConfig buildModuleConfig(String name, boolean enabled) { - URL demoModule; - ModuleConfig moduleConfig = new ModuleConfig(); - //通过该方法构建的配置都是使用注解形式扫描bean的 - String scanBase = "com.alipay.jarslink.main"; - moduleConfig.addScanPackage(scanBase); - moduleConfig.removeScanPackage(scanBase); - Map properties = new HashMap(); - moduleConfig.withEnabled(enabled).withVersion("1.0.0.20170621").withOverridePackages(ImmutableList.of( - "com.alipay.jarslink.demo")).withProperties(properties); - demoModule = Thread.currentThread().getContextClassLoader().getResource(JARSLINK_MODULE_DEMO); - - moduleConfig.setOverridePackages(ImmutableList.of("com.alipay.jarslink.demo")); - - moduleConfig.setName(name); - moduleConfig.setEnabled(enabled); - moduleConfig.setVersion("1.0.0.20170621"); - properties.put("url", "127.0.0.1"); - moduleConfig.setProperties(properties); - moduleConfig.setModuleUrl(ImmutableList.of(demoModule)); - return moduleConfig; + //再注册同一个模块,不会注册成功,返回空 + Module register = moduleManager.register(module); + Assert.assertNull(register); + Assert.assertEquals(1, moduleManager.getModules().size()); } private Module loadModule() { @@ -229,11 +95,15 @@ private Module loadModule() { } private Module loadModule(String name) { - return moduleLoader.load(buildModuleConfig(name, true)); + return moduleLoader.load(buildModuleConfig(name, "1.0.0.20170621", true)); } private void removeModule(Module module) { moduleManager.remove(module.getName()); } + private Module loadModule(String name, String version) { + return moduleLoader.load(buildModuleConfig(name, version, true)); + } + } diff --git a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleServiceTest.java b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleServiceTest.java index eae67c0..c4d4dd8 100644 --- a/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleServiceTest.java +++ b/jarslink-api/src/test/java/com/alipay/jarslink/api/impl/ModuleServiceTest.java @@ -27,6 +27,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import static com.alipay.jarslink.api.impl.ModuleLoaderImplTest.buildModuleConfig; + /** * @author tengfei.fangtf * @version $Id: ModuleServiceTest.java, v 0.1 2017年07月21日 10:33 AM tengfei.fangtf Exp $ @@ -41,7 +43,7 @@ public class ModuleServiceTest { @Test public void shouldLoadAndRegister() { //先加载并注册模块 - ModuleConfig moduleConfig = ModuleManagerTest.buildModuleConfig(); + ModuleConfig moduleConfig = buildModuleConfig(); Module module = moduleService.loadAndRegister(moduleConfig); Assert.assertNotNull(module); Assert.assertNotNull(module.getCreation()); @@ -50,7 +52,7 @@ public void shouldLoadAndRegister() { Assert.assertEquals(moduleConfig.getVersion(), module.getVersion()); //再禁用模块 - module = moduleService.loadAndRegister(ModuleManagerTest.buildModuleConfig(false)); + module = moduleService.loadAndRegister(buildModuleConfig(false)); Assert.assertNull(module); }