見出し画像

アサーションが実行できない(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の勉強中にでてきたアサーション。
使えるようになったらとても便利そう!!!

いいなと思ったら応援しよう!