gpt4 book ai didi

java - 单例的测试日期

转载 作者:行者123 更新时间:2023-11-28 21:13:01 24 4
gpt4 key购买 nike

我一直以这样的方式测试日期,我在我的类中有一个 protected 方法 getDate(),为了测试目的我重写了它。示例:

public class MyClass {
protected Date getDate(){
return new Date();
};
}

测试:

MyClass myclass = new MyClass(){
@Override
protected Date getDate(){
return new Date(1234567890);
}
};

到今天已经够用了,但是出现了如下问题:我有一个类,我想实例化一次,所以我使用单例模式:

public static Something getInstance() {
if (instance == null) {
instance = new Something();
}

return instance;
}

问题是我必须这样创建一个对象:Something.getInstance() - 对象是在该方法中创建的。我不能覆盖 getInstance 中的 getDate 方法,因为它没有意义(有时我需要真实实例,有时需要测试实例)。这引出了一个问题:如何在这种情况下测试日期?

最佳答案

正如您刚刚注意到的,每次您使用普通的老式 java 单例时,您都会创建不可测试的代码。

还有其他方法可以让一个类只有一个实例。从简单 - 只需创建一次 :) 到使用像 Spring 这样的 IoC 框架让他们关心它。

我建议你看看Misko Hevery's guide to writing testable code ,关于全局状态的部分。

关于java - 单例的测试日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com