gpt4 book ai didi

java - 添加静态方法以促进更清洁的单元测试 - 好的做法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:30:57 24 4
gpt4 key购买 nike

假设我有这个类:

class MyClass {
private String s;
// more attributes here
public MyClass(String s, /*more constructor params*/) {...}

public String myMethod(String s) {
//complex logic here
}
}

要对 myMethod() 进行单元测试,我需要创建整个对象(具有许多需要构造的参数等),而该方法仅使用 s.

另外我可以添加一个静态方法:

class MyClass {
private String s;
// more attributes here
public MyClass(String s, /*more constructor params*/) {...}

public String myMethod(String s) {
return myStaticMethod(s);
}

public static myStaticMethod(String s) {
//complex logic here
}
}

现在我无需创建对象即可轻松测试“复杂逻辑”。someStaticMethod(String s) 应该对类没有副作用。所以我添加了一个额外的方法只是为了便于测试。这是一个好的做法吗?

最佳答案

那么,即使复杂方法与该实例 nothing 几乎没有关系,您还是将其作为对象的成员?

是的,我同意你应该使用不同的设计。它可以是那个类中的静态方法,或者是它自己的类中的一个因素。 或者它可能是实现“策略”模式的对象的方法。正确的决定取决于变化的可能性。


也许是这样的:

class ComplexLogician {

String myMethod(String a, String b) {
/* Complex logic here. */
}

}

class MyClass {

private String s;

private final ComplexLogician logic;

/* More attributes here... */

MyClass(String s, ComplexLogician logic, /* More parameters... */) {...}

String myMethod(String b) {
return logic.myMethod(s, b);
}

}

关于java - 添加静态方法以促进更清洁的单元测试 - 好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173269/

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