私は私が順次インクリメントしています私のクラスのメソッドを持ついくつかのマイナーな問題を抱えています。基本的に私のクラスのコンパイルは、テストクラスがあり、私はテスト結果を得るためにテスターを実行したとき、私は私が探しています所望の出力を得ることはありません、それは私が以下提供されるエラーメッセージが続いています。
私の質問は、私はそれがプレフィックス+カウンターから始まりますが、すぐにそれをインクリメントしないオブジェクトを作成するとき、私はそれはそれはすぐになどなど1001年に作成された最初のオブジェクトをインクリメントすることを可能にしたいです。これらのエラーメッセージは、期待値は私の所望の出力とは全く違うものであるかに私を混乱させています。
私は1000年から始まり、プレフィックスセットとカウンターを持っています。
public static final String TICKET_PREFIX = "VAN";
public static int counter = 1000;
public ParkingTicket(){
ticketNumber = generateTicketNumber();
}
}
private String generateTicketNumber(){
ticketNumber = TICKET_PREFIX + counter++;
return ticketNumber;
}
ここでエラーがキャッチされたテストクラスのコードブロックからのコードがあります
@Test
public void testConstructorTicketNumberSEquential() {
ParkingTicket.resetCounter();
ParkingTicket ticket = new ParkingTicket("Adam White","VAN5225", "1A2B3C",20 );
ParkingTicket ticket2 = new ParkingTicket("Adam White","VAN5225", "1A2B3C",20 );
ParkingTicket ticket3 = new ParkingTicket("Adam White","VAN5225", "1A2B3C",20 );
assertEquals("VAN1001",ticket.getTicketNumber());
assertEquals("VAN1003", ticket3.getTicketNumber());
これは、テスタからのエラーメッセージであります
testConstructorTicketNumberSEquential
---
org.junit.ComparisonFailure: expected:<VAN100[1]> but was:<VAN100[7]>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at ParkingTicketTest.testConstructorTicketNumberSEquential(ParkingTicketTest.java:238)
また、私はカウンターをリセットする方法があります。私は、カウンタ値を返すみましたが、私はまだエラーを取得しています
public static int resetCounter(){
int reset = counter;
return reset;
}
リセットカウンターのためのテスト
@Test
public void testResetCounter() {
ParkingTicket.resetCounter();
assertEquals(1000,ParkingTicket.counter);
}
テスト実行エラーメッセージ
testResetCounter
---
java.lang.AssertionError: expected:<1000> but was:<1005>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:555)
at org.junit.Assert.assertEquals(Assert.java:542)
at ParkingTicketTest.testResetCounter(ParkingTicketTest.java:264)
あなたは、現在設定されたことがないcounter
の初期値の内側に背中をresetCounter()
、あなたは戻り値を使用することはありません。
私の意見では、resetCounter()
あるべきvoid
方法、および単に設定counter
定数に含まれている初期値に戻します。
私は、この定数の名前INITIAL_COUNTER
:
public static final String TICKET_PREFIX = "VAN";
public static final int INITIAL_COUNT = 1000;
public static int counter = INITIAL_COUNT;
public static void resetCounter() {
counter = INITIAL_COUNT;
}
public static void main(String[] args) {
counter++;
counter++;
System.out.println(counter);
ParkingTicket.resetCounter();
System.out.println(counter);
}
出力:
1002
1000
ここでは例からmain
、私はあなたが見ることができます作られたresetCounter
適切なリセットをcounter
バックに1000
。単にの値を変更INTIAL_COUNT
デフォルトのカウント値を変更するに。
別のノートでは、あなたが期待書いたVAN1001
最初のチケット値になるようにnew ParkingTicket("Adam White","VAN5225", "1A2B3C",20 )
、あなたが実際にそれがあることを期待しなければならないときVAN1000
。
これは、上のポストインクリメントを使用しているcount
代わりに以下の行に、プリインクリメントの:
ticketNumber = TICKET_PREFIX + counter++;
あなたはで開始する最初のチケットたい場合は1001
代わりに、変更count++
への++count
1でカウントをインクリメントします、前に割り当てるticketNumber
値を。