worldOfCompSci:
これは、Javaでのプライベート静的最終定数として列挙値を持つことは可能ですか?
私は現在、問題のクラスのIssueTestクラスを書いています。問題のクラスにおいて、Iは、バグまたは増強することができる問題のタイプの内部列挙を有します。
public enum IssueType {
ENHANCEMENT,
BUG;
}
問題のコンストラクタの一つでは、パラメータの一つはIssueTypeあります。
public Issue(IssueType type, String state, String summary) {
}
私は、このコンストラクタをテストする場合を記述しようとしています。私のテストクラスでは、私はそうのようなIssueTypesのための定数を作成しようとしました
private static final IssueType TYPE_BUG = BUG;
private static final IssueType TYPE_ENHANCEMENT = ENHANCEMENT;
しかし、これらの行は、コンパイラのエラーを作成しています。私は、コンストラクタをテストするために、私のテストクラスでIssueType定数を使用する方法がわからないです。任意のガイダンスは大歓迎です!
kriegaex:
他の人が前に言ったように、あなたは冗長作成するべきではありませんstatic final
あなたのテスト内のメンバーを、しかし、あなたはあなたができると主張している場合。正しく行わ場合は、任意のコンパイラエラーがあってはなりません。
私の小さなMCVEの冗長静的フィールドを使用し、エレガントに直接列挙定数を使用して、両方を行う方法を示しています。
package de.scrum_master.stackoverflow.q60556923;
public class Issue {
public enum IssueType {
ENHANCEMENT,
BUG
}
public Issue(IssueType type, String state, String summary) {}
}
package de.scrum_master.stackoverflow.q60482676;
import de.scrum_master.stackoverflow.q60556923.Issue.IssueType;
import org.junit.Test;
import static de.scrum_master.stackoverflow.q60556923.Issue.IssueType.*;
import static org.junit.Assert.assertEquals;
public class IssueTest {
// Seriously?! Nah, rather not.
private static final IssueType TYPE_BUG = BUG;
private static final IssueType TYPE_ENHANCEMENT = ENHANCEMENT;
@Test
public void testUsingStaticFinal() {
// Does this make anything better or just obfuscate and complicate the test?
assertEquals("BUG", TYPE_BUG.toString());
assertEquals("ENHANCEMENT", TYPE_ENHANCEMENT.toString());
}
@Test
public void testUsingEnumDirectly() {
assertEquals("BUG", BUG.toString());
assertEquals("ENHANCEMENT", ENHANCEMENT.toString());
}
}