You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试类无法识别外部类静态变量,如何无需实例化访问?

解决测试类访问静态Product变量的问题

你遇到的问题是因为虽然ProductFixture里的变量是静态的,但测试类没有正确引用它们。不用实例化ProductFixture的话,有两种最直接的解决办法:

1. 使用静态导入(Static Import)

这是最简洁的方式,直接在测试类的导入部分添加静态导入语句,这样就能在代码里直接使用door、window这些变量名,不用加类前缀。

在你的ShipmentTest类顶部添加:

// 导入所有静态成员,适合用多个变量的情况
import static com.monotonic.Shipment.project.ProductFixture.*;

// 或者只导入你需要的特定变量,更精确
// import static com.monotonic.Shipment.project.ProductFixture.door;
// import static com.monotonic.Shipment.project.ProductFixture.window;

修改后的测试方法就可以正常运行了:

@Test
public void shouldAddItems() throws Exception {
    shipment.add(door);
    shipment.add(window);
    assertThat(shipment, contains(door, window));
}

2. 通过类名直接访问静态变量

如果不想用静态导入,也可以直接在代码里通过ProductFixture类名来调用静态变量,这样也不需要实例化类:

@Test
public void shouldAddItems() throws Exception {
    shipment.add(ProductFixture.door);
    shipment.add(ProductFixture.window);
    assertThat(shipment, contains(ProductFixture.door, ProductFixture.window));
}

额外检查点

确保这两个前提没问题:

  • ProductFixture类本身是public修饰的(如果测试类和它不在同一个包下,必须是public才能访问)
  • 静态变量door、window确实是public static修饰的(你给出的代码里已经满足这一点)

内容的提问来源于stack exchange,提问作者gs650x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:16:35