我正在尝试将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。
答案 0 :(得分:0)
问题是您将JUnit 4与JUnit 5 aka Jupiter混合在一起。 @RunWith和@BeforeClass来自JUnit 4,@ BeforeEach来自Jupiter; @Test可能来自任何一个,具体取决于导入。
如果将@BeforeEach替换为@Before,则设置可以正常进行;至少您会更接近一些可行的方法。确保所有导入均来自org.junit或org.junit.jupiter.api