@RunWith(MyNutTestRunner.class)
@IocBean // 必须有
public class SimpleTest extends Assert {
问答
如果测试类带@IocBean的话,那么mainMoudle的@IocBy的args={}也得把这个测试类的包的路径家在里边吗
标签:
无
35 回复
下边这个有讲解吗
protected Ioc createIoc() {
Ioc ioc = super.createIoc();
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");
conf.put("db.url", "jdbc:h2:~/test");
return ioc;
}
PropertiesProxy这个类是这么写吗
protected Ioc createIoc() {
Ioc ioc = super.createIoc();
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "org.test.tongyong");
conf.put("db.url", "jdbc:mysql://127.0.0.1:3306/wcc");
conf.put("db.username", "root");
conf.put("db.password", "root");
conf.put("db.maxActive", "100");
conf.put("db.testWhileIdle", "true");
conf.put("db.filters", "mergeStat");
conf.put("db.connectionProperties", "druid.stat.slowSqlMillis=2000");
return ioc;
}
org.nutz.ioc.IocException: IocBean[org.test.tongyong] For object [org.test.tongyong] - type:[class org.nutz.ioc.impl.PropertiesProxy]
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:218)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
at org.test.tongyong.TestRunner.createIoc(TestRunner.java:23)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:30)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:14)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.nutz.ioc.ObjectLoadException: Object 'org.test.tongyong' without define!
at org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:166)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:180)
... 15 more
给个模板行不,源码量太多了
if (log.isDebugEnabled()) {
log.debugf("Get '%s'<%s>", new Object[]{name, type == null ? "" : type});
}
try {
if (this.mirrors instanceof LifeCycle) {
((LifeCycle)this.mirrors).init();
}
} catch (Exception var16) {
throw new IocException("_mirror_factory_init", var16, "Mirror Factory init fail", new Object[0]);
}
IocMaking ing = this.makeIocMaking(context, name);
IocContext cntx = ing.getContext();
ObjectProxy op = cntx.fetch(name);
Object var7;
if (null == op) {
var7 = this.lock_get;
synchronized(this.lock_get) {
op = cntx.fetch(name);
if (null == op) {
try {
if (log.isDebugEnabled()) {
log.debug("\t >> Load definition name=" + name);
}
IocObject iobj = this.loader.load(this.createLoading(), name);
if (null == iobj) {
String[] var9 = this.loader.getName();
int var10 = var9.length;
for(int var11 = 0; var11 < var10; ++var11) {
String iocBeanName = var9[var11];
if (3 > LevenshteinDistance.computeLevenshteinDistance(name.toLowerCase(), iocBeanName.toLowerCase())) {
throw new IocException(name, "Undefined object '%s' but found similar name '%s'", new Object[]{name, iocBeanName});
}
}
protected Class<?> getMainModule() {
return MainModule.class;
}
//protected Ioc createIoc() {
// Ioc ioc = super.createIoc();
// PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");
// conf.put("db.url", "jdbc:h2:~/test");
// return ioc;
// }
然后确保MainModule的@IocBy设置能覆盖testcase所在的package
package org.test;
import org.junit.runners.model.InitializationError;
import org.nutz.ioc.Ioc;
import org.nutz.ioc.impl.PropertiesProxy;
import org.nutz.mock.NutTestRunner;
import org.visual.tongyong.MainModule;
public class TestRunner extends NutTestRunner {
public TestRunner(Class<?> klass) throws InitializationError {
super(klass);
}
public Class<?> getMainModule() {
return MainModule.class;
}
/**
* 可覆盖createIoc,实现参数覆盖, bean替换,等定制.
*/
protected Ioc createIoc() {
Ioc ioc = super.createIoc();
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "org");
conf.put("db.url", "jdbc:mysql://127.0.0.1:3306/wcc");
return ioc;
}
}
package org.test;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nutz.dao.Dao;
import org.nutz.dao.SqlManager;
import org.nutz.dao.Sqls;
import org.nutz.dao.impl.FileSqlManager;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.Ioc;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.visual.tongyong.bean.WccProvinceQueryView;
import java.util.ArrayList;
import java.util.List;
@RunWith(TestRunner.class)
@IocBean
public class test extends Assert {
private static final Log log = Logs.get();
//Logger log = Logger.getLogger(test.class);
@Inject("refer:$ioc")
protected Ioc ioc;
@Inject
protected Dao dao;
@Test
public void test_t() {
List<WccProvinceQueryView> list = new ArrayList<>();
SqlManager sqlm = new FileSqlManager("sqls/");
Sql sql = sqlm.create("WarningData.query2");
Sql sql2= Sqls.create("SELECT count(*) FROM test");
sql2.setCallback(Sqls.callback.ints());
dao.execute(sql2);
int i = sql2.getInt();
log.info(list.size()+1);
}
}
D:\Software_Develops\JDK\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53520,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -Dfile.encoding=UTF-8 -classpath "D:\Software_Develops\IntelliJ IDEA 2017.1\lib\idea_rt.jar;D:\Software_Develops\IntelliJ IDEA 2017.1\plugins\junit\lib\junit-rt.jar;D:\Software_Develops\IntelliJ IDEA 2017.1\plugins\junit\lib\junit5-rt.jar;D:\Software_Develops\JDK\jre\lib\charsets.jar;D:\Software_Develops\JDK\jre\lib\deploy.jar;D:\Software_Develops\JDK\jre\lib\ext\access-bridge-64.jar;D:\Software_Develops\JDK\jre\lib\ext\cldrdata.jar;D:\Software_Develops\JDK\jre\lib\ext\dnsns.jar;D:\Software_Develops\JDK\jre\lib\ext\jaccess.jar;D:\Software_Develops\JDK\jre\lib\ext\jfxrt.jar;D:\Software_Develops\JDK\jre\lib\ext\localedata.jar;D:\Software_Develops\JDK\jre\lib\ext\nashorn.jar;D:\Software_Develops\JDK\jre\lib\ext\sunec.jar;D:\Software_Develops\JDK\jre\lib\ext\sunjce_provider.jar;D:\Software_Develops\JDK\jre\lib\ext\sunmscapi.jar;D:\Software_Develops\JDK\jre\lib\ext\sunpkcs11.jar;D:\Software_Develops\JDK\jre\lib\ext\zipfs.jar;D:\Software_Develops\JDK\jre\lib\javaws.jar;D:\Software_Develops\JDK\jre\lib\jce.jar;D:\Software_Develops\JDK\jre\lib\jfr.jar;D:\Software_Develops\JDK\jre\lib\jfxswt.jar;D:\Software_Develops\JDK\jre\lib\jsse.jar;D:\Software_Develops\JDK\jre\lib\management-agent.jar;D:\Software_Develops\JDK\jre\lib\plugin.jar;D:\Software_Develops\JDK\jre\lib\resources.jar;D:\Software_Develops\JDK\jre\lib\rt.jar;E:\Work\InstelliJIDEAR_WorkSpaceNo.1\visualdisplay\target\test-classes;E:\Work\InstelliJIDEAR_WorkSpaceNo.1\visualdisplay\target\classes;D:\Software_Develops\maven\Repository\org\nutz\nutz\1.r.63-SNAPSHOT\nutz-1.r.63-20170926.144244-97.jar;D:\Software_Develops\maven\Repository\org\apache\shiro\shiro-core\1.3.2\shiro-core-1.3.2.jar;D:\Software_Develops\maven\Repository\org\apache\shiro\shiro-web\1.3.2\shiro-web-1.3.2.jar;D:\Software_Develops\maven\Repository\org\apache\shiro\shiro-ehcache\1.3.2\shiro-ehcache-1.3.2.jar;D:\Software_Develops\maven\Repository\net\sf\ehcache\ehcache-core\2.5.3\ehcache-core-2.5.3.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-plugins-daocache\1.r.62\nutz-plugins-daocache-1.r.62.jar;D:\Software_Develops\maven\Repository\net\sf\ehcache\ehcache\2.10.4\ehcache-2.10.4.jar;D:\Software_Develops\maven\Repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\Software_Develops\maven\Repository\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;D:\Software_Develops\maven\Repository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;D:\Software_Develops\maven\Repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Software_Develops\maven\Repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\Software_Develops\maven\Repository\jstl\jstl\1.2\jstl-1.2.jar;D:\Software_Develops\maven\Repository\org\apache\commons\commons-email\1.5\commons-email-1.5.jar;D:\Software_Develops\maven\Repository\com\sun\mail\javax.mail\1.5.6\javax.mail-1.5.6.jar;D:\Software_Develops\maven\Repository\javax\mail\mail\1.4\mail-1.4.jar;D:\Software_Develops\maven\Repository\javax\activation\activation\1.1\activation-1.1.jar;D:\Software_Develops\maven\Repository\cn\apiclub\tool\simplecaptcha\1.2.2\simplecaptcha-1.2.2.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-integration-quartz\1.r.62\nutz-integration-quartz-1.r.62.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-integration-shiro\1.r.62\nutz-integration-shiro-1.r.62.jar;D:\Software_Develops\maven\Repository\org\slf4j\jcl-over-slf4j\1.7.24\jcl-over-slf4j-1.7.24.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-plugins-apidoc\1.r.62\nutz-plugins-apidoc-1.r.62.jar;D:\Software_Develops\maven\Repository\redis\clients\jedis\2.8.1\jedis-2.8.1.jar;D:\Software_Develops\maven\Repository\org\apache\commons\commons-pool2\2.4.2\commons-pool2-2.4.2.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-integration-jedis\1.r.63-SNAPSHOT\nutz-integration-jedis-1.r.63-20170925.052238-96.jar;D:\Software_Develops\maven\Repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\Software_Develops\maven\Repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;D:\Software_Develops\maven\Repository\org\apache\maven\plugins\maven-resources-plugin\2.4.3\maven-resources-plugin-2.4.3.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-plugin-api\2.0.6\maven-plugin-api-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-project\2.0.6\maven-project-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-profile\2.0.6\maven-profile-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-artifact-manager\2.0.6\maven-artifact-manager-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-plugin-registry\2.0.6\maven-plugin-registry-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-core\2.0.6\maven-core-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-file\1.0-beta-2\wagon-file-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-plugin-parameter-documenter\2.0.6\maven-plugin-parameter-documenter-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-http-lightweight\1.0-beta-2\wagon-http-lightweight-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-http-shared\1.0-beta-2\wagon-http-shared-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\jtidy\jtidy\4aug2000r7-dev\jtidy-4aug2000r7-dev.jar;D:\Software_Develops\maven\Repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\reporting\maven-reporting-api\2.0.6\maven-reporting-api-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\doxia\doxia-sink-api\1.0-alpha-7\doxia-sink-api-1.0-alpha-7.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-provider-api\1.0-beta-2\wagon-provider-api-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-repository-metadata\2.0.6\maven-repository-metadata-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-error-diagnostics\2.0.6\maven-error-diagnostics-2.0.6.jar;D:\Software_Develops\maven\Repository\commons-cli\commons-cli\1.0\commons-cli-1.0.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-ssh-external\1.0-beta-2\wagon-ssh-external-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-ssh-common\1.0-beta-2\wagon-ssh-common-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-plugin-descriptor\2.0.6\maven-plugin-descriptor-2.0.6.jar;D:\Software_Develops\maven\Repository\org\codehaus\plexus\plexus-interactivity-api\1.0-alpha-4\plexus-interactivity-api-1.0-alpha-4.jar;D:\Software_Develops\maven\Repository\org\apache\maven\wagon\wagon-ssh\1.0-beta-2\wagon-ssh-1.0-beta-2.jar;D:\Software_Develops\maven\Repository\com\jcraft\jsch\0.1.27\jsch-0.1.27.jar;D:\Software_Develops\maven\Repository\classworlds\classworlds\1.1\classworlds-1.1.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-artifact\2.0.6\maven-artifact-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-settings\2.0.6\maven-settings-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-model\2.0.6\maven-model-2.0.6.jar;D:\Software_Develops\maven\Repository\org\apache\maven\maven-monitor\2.0.6\maven-monitor-2.0.6.jar;D:\Software_Develops\maven\Repository\org\codehaus\plexus\plexus-container-default\1.0-alpha-9-stable-1\plexus-container-default-1.0-alpha-9-stable-1.jar;D:\Software_Develops\maven\Repository\org\codehaus\plexus\plexus-utils\2.0.5\plexus-utils-2.0.5.jar;D:\Software_Develops\maven\Repository\org\apache\maven\shared\maven-filtering\1.0-beta-4\maven-filtering-1.0-beta-4.jar;D:\Software_Develops\maven\Repository\org\sonatype\plexus\plexus-build-api\0.0.4\plexus-build-api-0.0.4.jar;D:\Software_Develops\maven\Repository\org\codehaus\plexus\plexus-interpolation\1.13\plexus-interpolation-1.13.jar;D:\Software_Develops\maven\Repository\mysql\mysql-connector-java\5.1.40\mysql-connector-java-5.1.40.jar;D:\Software_Develops\maven\Repository\org\quartz-scheduler\quartz\2.2.1\quartz-2.2.1.jar;D:\Software_Develops\maven\Repository\c3p0\c3p0\0.9.1.1\c3p0-0.9.1.1.jar;D:\Software_Develops\maven\Repository\org\quartz-scheduler\quartz-jobs\2.2.1\quartz-jobs-2.2.1.jar;D:\Software_Develops\maven\Repository\com\alibaba\druid\1.0.27\druid-1.0.27.jar;D:\Software_Develops\JDK\lib\jconsole.jar;D:\Software_Develops\JDK\lib\tools.jar;D:\Software_Develops\maven\Repository\org\nutz\nutz-plugins-mock\1.r.63-SNAPSHOT\nutz-plugins-mock-1.r.63-20170925.052309-96.jar;D:\Software_Develops\maven\Repository\junit\junit\4.12\junit-4.12.jar;D:\Software_Develops\maven\Repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\Software_Develops\maven\Repository\org\mockito\mockito-core\2.10.0\mockito-core-2.10.0.jar;D:\Software_Develops\maven\Repository\net\bytebuddy\byte-buddy\1.7.4\byte-buddy-1.7.4.jar;D:\Software_Develops\maven\Repository\net\bytebuddy\byte-buddy-agent\1.7.4\byte-buddy-agent-1.7.4.jar;D:\Software_Develops\maven\Repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 org.test.test,test_t
Connected to the target VM, address: '127.0.0.1:53520', transport: 'socket'
Test ignored.
2017-09-27 14:43:48,472 org.nutz.resource.Scans.printLocations(Scans.java:527) DEBUG - Locations count=105 time use 292ms
2017-09-27 14:43:48,491 org.nutz.resource.Scans.scan(Scans.java:280) DEBUG - Found 4 resource by src( ioc/ ) , regex( ^(.+[.])(js|json)$ )
2017-09-27 14:43:48,492 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [dao.js]
2017-09-27 14:43:48,498 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [ehcache.js]
2017-09-27 14:43:48,498 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [mail.js]
2017-09-27 14:43:48,499 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [dao.js]
2017-09-27 14:43:48,501 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) DEBUG - Loaded 8 bean define from path=[ioc/] --> [dao, cacheProvider, emailAuthenticator, htmlEmail, cacheExecutor, conf, dataSource, cacheManager]
2017-09-27 14:43:48,537 org.nutz.resource.Scans.scan(Scans.java:280) DEBUG - Found 27 resource by src( org/visual/tongyong/ ) , regex( ^.+[.]class$ )
2017-09-27 14:43:48,591 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.module.AuthorityModule
2017-09-27 14:43:48,614 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.module.CaptchaModule
2017-09-27 14:43:48,619 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.module.DataModule
2017-09-27 14:43:48,623 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.module.UserModule
2017-09-27 14:43:48,636 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.module.UserProfileModule
2017-09-27 14:43:48,642 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.quartz.job.CleanNonActiveUserJob
2017-09-27 14:43:48,648 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.service.AuthorityServiceImpl
2017-09-27 14:43:48,650 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.service.EmailServiceImpl
2017-09-27 14:43:48,656 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class org.visual.tongyong.service.UserService
2017-09-27 14:43:48,741 org.nutz.castor.Castors.reload(Castors.java:115) DEBUG - Using 95 castor for Castors
2017-09-27 14:43:48,745 org.nutz.ioc.loader.annotation.AnnotationIocLoader.<init>(AnnotationIocLoader.java:52) INFO - Found 9 classes in 1 base-packages!
beans = ["cleanNonActiveUserJob", "authorityService", "userProfileModule", "dataModule", "captchaModule", "authorityModule", "userModule", "emailService", "userService"]
2017-09-27 14:43:48,757 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:40) DEBUG - Loaded 5 bean define from reader --
[txREPEATABLE_READ, txSERIALIZABLE, txNONE, txREAD_UNCOMMITTED, txREAD_COMMITTED]
2017-09-27 14:43:48,761 org.nutz.ioc.loader.combo.ComboIocLoader.createIocLoader(ComboIocLoader.java:110) DEBUG - found jedis -- org.nutz.integration.jedis.JedisIocLoader
2017-09-27 14:43:48,770 org.nutz.resource.Scans.scan(Scans.java:280) DEBUG - Found 1 resource by src( org/nutz/integration/jedis/jedis.js ) , regex( ^(.+[.])(js|json)$ )
2017-09-27 14:43:48,770 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [org/nutz/integration/jedis/jedis.js]
2017-09-27 14:43:48,773 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) DEBUG - Loaded 9 bean define from path=[org/nutz/integration/jedis/jedis.js] --> [redisService, jedisCluster, jedisClusterNodes, jedisClusterWrapper, pubSubService, jedisPoolConfig, jedisPool, jedisAgent, redis]
2017-09-27 14:43:48,793 org.nutz.ioc.loader.combo.ComboIocLoader.createIocLoader(ComboIocLoader.java:110) DEBUG - found quartz -- org.nutz.integration.quartz.QuartzIocLoader
2017-09-27 14:43:48,801 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) DEBUG - Loaded 0 bean define from path=[] --> []
2017-09-27 14:43:48,817 org.nutz.ioc.impl.NutIoc.<init>(NutIoc.java:98) INFO - NutIoc init begin ...
2017-09-27 14:43:48,823 org.nutz.ioc.impl.NutIoc.<init>(NutIoc.java:115) INFO - ... NutIoc init complete
2017-09-27 14:43:48,824 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'org'<class org.nutz.ioc.impl.PropertiesProxy>
2017-09-27 14:43:48,833 org.nutz.ioc.aop.SimpleAopMaker.<init>(SimpleAopMaker.java:79) DEBUG - Load AopConfigure for anno=org.nutz.ioc.aop.Aop by type=org.nutz.ioc.aop.config.impl.AnnotationAopConfigration
2017-09-27 14:43:48,836 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=org
org.nutz.ioc.IocException: IocBean[org] For object [org] - type:[class org.nutz.ioc.impl.PropertiesProxy]
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:218)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
at org.test.TestRunner.createIoc(TestRunner.java:23)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:30)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:14)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.nutz.ioc.ObjectLoadException: Object 'org' without define!
at org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:166)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:180)
... 15 more
Disconnected from the target VM, address: '127.0.0.1:53520', transport: 'socket'
Process finished with exit code -1
protected Ioc createIoc() {
Ioc ioc = super.createIoc();
PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");
conf.put("db.url", "jdbc:mysql://127.0.0.1:3306/wcc");
return ioc;
}
package org.test;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nutz.dao.Dao;
import org.nutz.dao.SqlManager;
import org.nutz.dao.Sqls;
import org.nutz.dao.impl.FileSqlManager;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.Ioc;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.visual.tongyong.bean.WccProvinceQueryView;
import java.util.ArrayList;
import java.util.List;
@RunWith(TestRunner.class)
@IocBean
public class test extends Assert {
private static final Log log = Logs.get();
//Logger log = Logger.getLogger(test.class);
@Inject("refer:$ioc")
protected Ioc ioc;
@Inject
protected Dao dao;
@Test
public void test_t() {
List<WccProvinceQueryView> list = new ArrayList<>();
SqlManager sqlm = new FileSqlManager("sqls/");
Sql sql = sqlm.create("WarningData.query2");
Sql sql2= Sqls.create("SELECT count(*) FROM test");
sql2.setCallback(Sqls.callback.ints());
dao.execute(sql2);
int i = sql2.getInt();
log.info(list.size()+1);
}
}
2017-09-27 14:50:15,558 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'test'<class org.test.test>
2017-09-27 14:50:15,558 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=test
org.nutz.ioc.IocException: IocBean[test] For object [test] - type:[class org.test.test]
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:218)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:239)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:146)
at org.nutz.mock.NutTestRunner.createTest(NutTestRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:33)
at org.nutz.mock.NutTestRunner.runChild(NutTestRunner.java:14)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.nutz.ioc.ObjectLoadException: Object 'test' without define!
at org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:166)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:180)
... 20 more
2017-09-27 14:50:15,573 org.nutz.ioc.impl.NutIoc.depose(NutIoc.java:255) INFO - org.nutz.ioc.impl.NutIoc@2076287037 is closing. startup date [17-09-27 14:50:15.442]
2017-09-27 14:50:15,573 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) DEBUG - Depose object 'conf' ...
2017-09-27 14:50:15,574 org.nutz.ioc.impl.NutIoc.depose(NutIoc.java:262) INFO - org.nutz.ioc.impl.NutIoc@2076287037 is deposed. startup date [17-09-27 14:50:15.442]
Process finished with exit code -1
通了,不过有两个疑惑,1:PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf");这个您刚才说conf是dao.js里的ioc bean,我这个项目里有两个dao.js(一个在Java目录下的resources的ioc/下,一个在test的resources的ioc下),这里ioc.get(PropertiesProxy.class, "conf");它找的是哪个dao.js里的
@IocBy(type=ComboIocProvider.class, args={
"*js", "ioc/",
"*anno", "org.visual.tongyong","org.mytest",
"*tx",
"*jedis",
"*quartz"})
第二个不太懂的地方是mainModule里的IocBy()里配置上测试包的路径后,mvn compile或mvn install 执行的时候会不会把测试代码也带上一起编译到war包里了
给个模板把...
添加Runner. web项目建议覆盖getMainModule方法, 非web项目覆盖getIocArgs
因为这里提到的这两个方法的作用有点似懂非懂,能看明白点但是不知道怎么写,应该是我没有完全理解这个类,汗...
那就用第一个方式就是最简单的了如果有特殊测试情况(需要连接另一个服务器专门的用来测试的数据库的时候)就覆盖getIocArgs方法来改变resource的扫描路径(改成test下的TestResources下的ioc上)。以后这样的方案来搭项目行吗?
添加回复
请先登陆