gpt4 book ai didi

java - 用于 JUnit 测试的 Mockup JNDI 数据源

转载 作者:行者123 更新时间:2023-12-01 22:10:09 26 4
gpt4 key购买 nike

我正在尝试将 JNDI 数据源模拟到 JUnit 测试中,但由于某种原因它不起作用:

我使用这些导入:

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.activation.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.xml.bind.JAXBException;
import org.junit.BeforeClass;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.mock.jndi.SimpleNamingContextBuilder;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@SpringBootTest(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class BinCountryCheckFilterImplTest {

..........

@MockBean
private static DataSource dataSource;

@BeforeClass
public static void setupJndi() throws Exception {
SimpleNamingContextBuilder.emptyActivatedContextBuilder();
Context context = new InitialContext();
context.bind("java:global/production_gateway", dataSource);
}

@BeforeEach
public void beforeEachTest() throws IOException {
........
}

@Test
public void testBinCountryCheckFilterImpl(){
.....

}

有什么办法可以解决这个问题吗?您是否发现导入的软件包存在一些问题?我需要使用 JUnit5。

最佳答案

问题是您将 JUnit 4 与 JUnit 5 又名 Jupiter 混合在一起。 @RunWith 和 @BeforeClass 来自 JUnit 4,@BeforeEach 来自 Jupiter; @Test 可能来自其中之一,具体取决于导入。

如果你用@Before替换@BeforeEach,你的设置就可以工作;至少你会更接近一些可行的东西。确保所有导入均来自 org.junit 或 org.junit.jupiter.api

关于java - 用于 JUnit 测试的 Mockup JNDI 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58666874/

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