无法访问测试项目中的静态常量
本文关键字:静态 常量 项目 访问 测试 | 更新日期: 2023-09-27 18:31:44
对于我的单元测试,我正在尝试在我的测试项目中使用来自主项目的静态类(ModelConstants
)的常量。
int ones = ModelConstants.PLOT_STORE_PRECISION_FACTOR * ModelConstants.RECENT_SAMPLES;
尝试运行此测试方法时,我在上面的行中得到了一个TypeInitializationException
。InnerException是一个FileNotFoundException
,表示找不到程序集System.Windows
。这对我来说毫无意义,但我想静态常量类可能以某种方式无法正确初始化。这可能是什么原因呢?
顺便说一句,我可以毫无问题地实例化我的主项目的非静态类。
编辑:
常量定义如下:
public static readonly int TRACKING_INTERVAL = 200;
public static readonly int SAMPLE_WINDOW = 3;
public static readonly int PLOT_STORE_PRECISION_FACTOR = 1000 / TRACKING_INTERVAL;
public static readonly int TRACKING_INTERVAL = 200;
public static readonly int SAMPLE_WINDOW = 3;
public static readonly int PLOT_STORE_PRECISION_FACTOR = 1000 / TRACKING_INTERVAL;
这些不是常量。这些是类静态字段。读取此类字段时,将调用静态类构造函数。那里有你的TypeInitializationException
,它在类型初始化时抛出。原因是在InnerException
.
相反,我建议使用常量:
public const int TRACKING_INTERVAL = 200;
public const int SAMPLE_WINDOW = 3;
public const int PLOT_STORE_PRECISION_FACTOR = 1000 / TRACKING_INTERVAL;
这些在编译时进行检查和访问,甚至可能提高性能。
从您提供的数据来看,我看到错误的唯一可能原因是 ModelConstants
类有一个静态构造函数,由于某种原因,该构造函数仅在测试项目中引发异常。
可能是构造函数访问了测试项目中未初始化的某个全局状态。