gpt4 book ai didi

java - Junit 测试 - com.liferay.portal.kernel.bean.BeanLocatorException : BeanLocator has not been set

转载 作者:行者123 更新时间:2023-12-01 14:02:24 26 4
gpt4 key购买 nike

public class CustomServiceImplTest extends TestCase{

ApplicationContext ac;

private BeanLocator mockBeanLocator;

@Test
public void testCreateCategory() throws Exception {

CustomService customService = (CustomService) ac.getBean("customService");
customService.CreateCategory();
}

@Before
public void setUp()
{
mockBeanLocator = Mockito.mock(BeanLocator.class);
PortalBeanLocatorUtil.setBeanLocator(mockBeanLocator);
CompanyLocalServiceUtil mockCompanyLocalService = Mockito.mock(CompanyLocalServiceUtil.class);
ac = CustomSpringUtils.loadApplicationContext(new String[] { ""/applicationContext-Services.xml" });
}
}

我使用基本的 JUnit 4 并在上面创建了扩展 TestCase 的测试类。

我遇到的异常如下:

java.lang.NullPointerException  at com.liferay.portal.service.CompanyLocalServiceUtil.getCompanyByWebId(CompanyLocalServiceUtil.java:498)

以下方法customService.CreateCategory();调用 Lifery util 方法,例如 CompanyLocalServiceUtil.getCompanyByWebId 等。

请任何人对此有所了解。我真的很感谢任何帮助。

我需要在 spring 配置文件中提供 Liferay DS 信息吗?或

有什么办法可以删除数据吗?
我正在尝试在 Liferay 实体类之一上测试 ADD 操作 -

MBCategoryLocalServiceUtil.addCategory(...)

最佳答案

您必须在 CompanyLocalServiceUtil 中注入(inject)/模拟 CompanyLocalService 类。 Liferay 的做法是:

CompanyLocalService service = ..... // mock;
new CompanyLocalServiceUtil().setService(service);

setService 是一个实例方法,但为静态字段赋值。不要问我为什么要这样实现和设计。

关于java - Junit 测试 - com.liferay.portal.kernel.bean.BeanLocatorException : BeanLocator has not been set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com