2016-02-22 38 views
5

Tôi đang cố gắng khẳng định rằng đôi của tôi là NaN. Đây là một đoạn mã:Java Assert Double là NaN

private Double calculateIt(String input){...} 

assertEquals(Double.NaN, calculateIt("input text")); 

Các mã không biên dịch, Double.NaN được định nghĩa là nguyên thủy

public static final double NaN = 0.0d/0.0; 

Để thực hiện các công việc khẳng định tôi quấn NaN với một đối tượng đúp.

assertEquals(new Double(Double.NaN), calculateIt("input text")); 

Có cách nào ngắn hơn để thực hiện việc này không?

+2

Tốt hơn là vấn đề quan điểm –

Trả lời

6

Bạn có thể sử dụng:

boolean isNan = Double.isNaN(calculateIt("input text")); 
assertTrue(isNan); 

Double.NaN giá trị không thể so sánh với == (Double.NaN == Double.NaN sẽ trở lại false), bởi vì NaN được coi là một người đặc biệt. Thông tin

thêm:

1

assertEquals(Double.NaN, calculateIt(...), 0.0) với assertEquals(double, double, double)

hoặc

assertThat(calculateIt(...), isNan()) với Hamcrest. cách

tốt hơn để làm điều này

gì tốt nhất cho mục đích? Bạn có thể đọc lướt qua và dễ dàng xem phương pháp đang thử nghiệm ở đâu?

0

Ngắn hơn là Double.valueOf("NaN") hoặc bằng cách nhập tĩnh valueOf("NaN"), nhưng về cơ bản giống như bạn đã có.

1

Bạn có thể thử như sau:

assertTrue(Double.compare(Double.NaN, calculateIt("input text"))); 

Hy vọng điều này giúp bạn.

Các vấn đề liên quan