首页 > 解决方案 > 静态导入如何为空

问题描述

由于它是在声明中初始化的,并且导入本身就意味着依赖。

我们有一个 jUnit 父测试类,比如......

public class ServerTestBase extends TestBase {

public static final Client client = new Client();
...

还有一个带有客户端静态导入的套件和使用此客户端的@ClassRule 中的一些初始化代码:

import static jwstest.test.ServerTestBase.client;

@RunWith(Suite.class)
@Suite.SuiteClasses({BunchOfSuites.class})
public class ScratchSuite {

@ClassRule
public static final ExternalResource testRule = new ExternalResource() {
    @Override
    protected void before() throws Throwable {

        response = client.call(someService, HttpVerbs.GET).getResponse();

所以,再一次,我不明白,客户端怎么可能是 null,因为它是在声明时初始化的,并且静态导入意味着依赖。

有任何想法吗?先感谢您。

标签: junit4

解决方案


文档说在 中可访问的字段@ClassRule必须是public static.

静态导入不是这样的。

您可以扩展ServerTestBase

public class ScratchSuite extends ServerTestBase { ... }

...或public static重新声明:

public static Client myClient = client; //from static import

推荐阅读