Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将参数传递给Junit安装方法_Java_Spring - Fatal编程技术网

Java 将参数传递给Junit安装方法

Java 将参数传递给Junit安装方法,java,spring,Java,Spring,我有以下基本测试类,其他测试类将对其进行扩展: @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc @ActiveProfiles("test") public class BaseControllerTest { @Autowired protected Filter springSecurityFilterChain; @Autowired protected MockMv

我有以下基本测试类,其他测试类将对其进行扩展:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
public class BaseControllerTest {

    @Autowired
    protected Filter springSecurityFilterChain;

    @Autowired 
    protected MockMvc mockMvc;

    @MockBean
    protected AuthenticationManager authenticationManager;

    @Autowired
    protected WebApplicationContext context;

    @Before
    public void setup() throws SQLException {
        mockMvc = MockMvcBuilders.webAppContextSetup(context)
                .addFilters(springSecurityFilterChain).build();
        Server webServer = Server.createWebServer("-web", "-webAllowOthers", "-webPort", "8082");
        webServer.start();
    }
}

有两种类型的测试类,一种是
addFilters
MockMvcBuilders
的,另一种是不
addFilters
的。我无法将任何参数传递给
设置
。有没有办法不为这两类测试类中的每一类创建一个类

我是那些不喜欢在测试中使用父类的人之一。最好使用测试设置中包含的实用程序,这样开发人员就可以知道这些测试所依赖的是什么,而无需在层次结构中导航以查找@Before's、@After's或任何可能影响这些测试的内容。此外,对于层次结构,当您想要组合实现时,很快就会遇到问题(您知道,不允许有多个父级)

话虽如此,对于您提出的方法,我只是将这个基类抽象并声明一个抽象方法,以确定实际测试是否需要这些过滤器。然后,setup()只需要调用该方法并执行它需要执行的任何操作。您的测试类只需要实现该抽象方法(基本上是一个真/假标志)


如果您的测试之间只有这种区别,那么您还可以有另外两个子基类(主基类的子类),每个子基类以自己的方式实现该抽象方法。然后,您的测试可以只扩展这些子基类中的一个,而不实现任何东西。

我是不喜欢在测试中使用父类的人之一。最好使用测试设置中包含的实用程序,这样开发人员就可以知道这些测试所依赖的是什么,而无需在层次结构中导航以查找@Before's、@After's或任何可能影响这些测试的内容。此外,对于层次结构,当您想要组合实现时,很快就会遇到问题(您知道,不允许有多个父级)

话虽如此,对于您提出的方法,我只是将这个基类抽象并声明一个抽象方法,以确定实际测试是否需要这些过滤器。然后,setup()只需要调用该方法并执行它需要执行的任何操作。您的测试类只需要实现该抽象方法(基本上是一个真/假标志)

如果您的测试之间只有这种区别,那么您还可以有另外两个子基类(主基类的子类),每个子基类以自己的方式实现该抽象方法。然后,您的测试可以只扩展其中一个子基类,而不实现任何东西