アサーションが実行できない(Java)
実行環境
・Java21
・エクリプスバージョン2023-12 (4.30.0)
アサーションができない
想定外事象
アサーションを設定したItem10クラスを呼び出すSample10クラスを実行したところ想定とは異なる結果が出力された
public class Sample10 {
public static void main(String[] args) {
Item10 item = new Item10("apple", 100);
item.setPrice(-1);
System.out.println("Price :" + item.getPrice());
}
}
public class Item10 {
private int price;
public Item10(String name, int price) {
this.price = price;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
// 事前条件の確認
assert price > 0 : "incalid price : " + price;
this.price = price;
}
}
出力結果
Price :-1
原因
エクリプスでアサーションのプログラムを実行すると、
アサーションが無効になっているため想定のエラーが出力されないことがあるらしい。
対応
エクリプスで実行ボタンを押下するのではなく、
実行の構成 > 引数 > VM引数に「-ea※」を入力してから実行ボタンを押下する。
※--enableassertions
対応後の出力結果
Exception in thread "main" java.lang.AssertionError: incalid price : -1
at chap8.Item10.setPrice(Item10.java:16)
at chap8.Sample10.main(Sample10.java:6)
さいごに
Java Goldの勉強中にでてきたアサーション。
使えるようになったらとても便利そう!!!