点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好,
我在执行自己的单元测试方法时遇到一些问题...我认为问题在于创建ProductModel,但是我不确定...
错误消息:
java.lang.ExceptionInInitializerError
在de.hybris.platform.servicelayer.model.DefaultNewModelContextFactory.getTenantId(DefaultNewModelContextFactory.java:48)
在de.hybris.platform.servicelayer.model.DefaultNewModelContextFactory.createNewBuilder(DefaultNewModelContextFactory.java:39)
在de.hybris.platform.servicelayer.model.DefaultNewModelContextFactory.createNew(DefaultNewModelContextFactory.java:30)
在de.hybris.platform.servicelayer.model.AbstractItemModel。(AbstractItemModel.java:65)
在de.hybris.platform.core.model.ItemModel。(ItemModel.java:76)
在de.hybris.platform.core.model.product.ProductModel。(ProductModel.java:675)
在com.unic.hybris.interdiscount.b2b.facades.impl.DefaultIDB2BProductFacadeTest.testGetProduct(DefaultIDB2BProductFacadeTest.java:72)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:44)
在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
在org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
在org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
在org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
在org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)
在org.junit.runners.ParentRunner上$ 1.schedule(ParentRunner.java:60)
在org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
在org.junit.runners.ParentRunner.access处$ 000(ParentRunner.java:50)
在org.junit.runners.ParentRunner上$ 2.evaluate(ParentRunner.java:222)
在org.junit.runners.ParentRunner.run(ParentRunner.java:292)
在org.junit.runners.Suite.runChild(Suite.java:128)
在org.junit.runners.Suite.runChild(Suite.java:24)
在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)
在org.junit.runners.ParentRunner上$ 1.schedule(ParentRunner.java:60)
在org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
在org.junit.runners.ParentRunner.access处$ 000(ParentRunner.java:50)
在org.junit.runners.ParentRunner上$ 2.evaluate(ParentRunner.java:222)
在org.junit.runners.ParentRunner.run(ParentRunner.java:292)
在org.junit.runner.JUnitCore.run(JUnitCore.java:157)
在com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
在com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
在com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
引起原因:de.hybris.bootstrap.config.BootstrapConfigException:无法确定platformhome
在de.hybris.bootstrap.config.ConfigUtil.getPlatformHome(ConfigUtil.java:136)
在de.hybris.bootstrap.config.ConfigUtil.getPlatformConfig(ConfigUtil.java:354)
在de.hybris.bootstrap.config.ConfigUtil.loadLog4JProperties(ConfigUtil.java:369)
在de.hybris.platform.core.Log4JUtils.readConfig(Log4JUtils.java:105)
在de.hybris.platform.core.Log4JUtils.startup(Log4JUtils.java:59)
在de.hybris.platform.core.Registry。(Registry.java:67)
...更多42
原因:de.hybris.bootstrap.config.BootstrapConfigException:无法确定core-items.xml的路径
在de.hybris.bootstrap.config.ConfigUtil.getPlatformHome(ConfigUtil.java:85)
...更多47
java.lang.ExceptionInInitializerError
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
在java.lang.reflect.Constructor.newInstance(Constructor.java:526)
在org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
在org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
在org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
在org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
在org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
在org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98)
在org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
在com.intellij.junit4.JUnit46ClassesRequestBuilder.collectWrappedRunners(JUnit46ClassesRequestBuilder.java:90)
在com.intellij.junit4.JUnit46ClassesRequestBuilder.getClassesRequest(JUnit46ClassesRequestBuilder.java:51)
在com.intellij.junit4.JUnit4TestRunnerUtil.buildRequest(JUnit4TestRunnerUtil.java:91)
在com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:39)
在com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
在com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
引起原因:de.hybris.bootstrap.config.BootstrapConfigException:无法确定platformhome
在de.hybris.bootstrap.config.ConfigUtil.getPlatformHome(ConfigUtil.java:136)
在de.hybris.bootstrap.config.ConfigUtil.getPlatformConfig(ConfigUtil.java:354)
在de.hybris.bootstrap.config.ConfigUtil.loadLog4JProperties(ConfigUtil.java:369)
在de.hybris.platform.core.Log4JUtils.readConfig(Log4JUtils.java:105)
在de.hybris.platform.core.Log4JUtils.startup(Log4JUtils.java:59)
在de.hybris.platform.testframework.HybrisJUnit4ClassRunner。(HybrisJUnit4ClassRunner.java:54)
...另外22个
原因:de.hybris.bootstrap.config.BootstrapConfigException:无法确定core-items.xml的路径
在de.hybris.bootstrap.config.ConfigUtil.getPlatformHome(ConfigUtil.java:85)
...另外27个
我的代码:
@Test
公共无效testGetProduct()引发异常{
最终的ProductModel productModel = new ProductModel();
productModel.setCode(" TEST_CODE");
assert(true);
}
我错过了一些配置吗?
非常感谢!
格里兹
多米尼克,你好
我认为这仅仅是由于您的测试课程。 我没有在类的顶部找到@unittest批注,这将有助于Hybris将该类标识为单元测试类。
另一种是在编写单元测试类时,不需要实例化模型类,可以像下面的代码一样使用模仿框架。 请尝试并检查。
我想问题是当您在测试类中实例化模型时,它会查询资源路径,这对于单元测试用例将不可用,因此请使用Mockito框架并尝试它应该起作用。
此致
Raghavendra。
您是否已在hAC中初始化并激活了jUnit租户?
嘿卢克,
谢谢您的回答,是的,我初始化了jUnit租户,并且还查看了为jUnit租户激活了我的扩展程序...我还注意在执行单元测试期间服务器未在运行。 ..我非常沮丧,因为我不知道如何解决我的问题...
屏幕截图hAC:
我的单元测试班:
如果有人可以帮助我解决我的问题,我会花些啤酒!
非常感谢!
Greetz
嗨,多米尼克,
我写了一篇有关单元测试和服务层测试之间差异的文章。 您可能会明白,为什么必须在单元测试中模拟模型。
http: //ecommercecandles.com/en/hybris-ecommerce-platform-main/16-testing/16-writing-integration-and-unit-tests
嘿Raghavendra, >
非常感谢您的回答,我现在创建了ProductModel的模拟,它可以正常工作。 但是我不明白为什么他们在试验中不使用模拟……手工模型和ProductModel之间有区别吗?
链接到足迹:
https://wiki.hybris.com/display/tr52/Trail +〜+ Testing + the + Facade
Greetz
私有ProductModel getProductModel(){
一周热门 更多>