I持ってこのようないくつかの計算含むいくつかの複雑なアクションを実行しようとしているクラス:評価者は、いくつかの複雑なロジックが含まれている場合がありますのではテスト目的のためにクラスのパッケージプライベートにすることは可能です
public class ComplexAction {
public void someAction(String parameter){
ComplexActionEvaluator evaluator = new ComplexActionEvaluator();
int value = evaluator.eval(parameter);
//some other actions
}
static class ComplexActionEvaluator implements Evaluator{
public int eval(String parameter){
//evaluation
}
}
}
//package-private, uses only for Actions
interface Evaluator{
int eval(String parameter);
}
をIそのためのテストを書くのが好きです。しかし、ComplexActionEvaluator
はComplexAction
に固有なので、パッケージプライベートではなくプライベートにします。しかし、これはテストのためにそれを不可能にするでしょう。
私が最初に気づいたのは、それをデフォルトアクセスにすることだけでした。しかし、デフォルトアクセスはテストのために利用できるようにするためのものです。
どのアクセス修飾子を使用するかの判断がテストによって偏っていると、かなり良いとは思えません。たぶん私は何か間違っているのでしょうか、それとも普通の習慣ですか?
実際には、「もしあなたがJavaでそれを解決できないのなら、それをJavaDocsの仕事でやってください」というのが、私の回避策のようです。しかし、私はそれが 'ComplexAction'の内部に' ComplexActionEvaluator'を置くことがこのケースだと思います。 – user3663882
実際には、私はそれが両方であると思います:一方では、回避策です。よりよい解決策があります。一方、適切なjavadocを持つこと自体は良いことです。その意味では:すでにそこにあるものを使うことができます。 – GhostCat