2015-01-19 20 views
10

Tôi có một số mã TestNG, trong đó tôi chuyển một tham số chú thích Kiểm tra được gọi là timeOut = TESTNG_TEST_TIMEOUT.Trong Java tại sao lỗi này: 'giá trị thuộc tính phải là hằng số'?

@Test(description = "Tests something.", groups = { "regression" }, 
    timeOut = TESTNG_TEST_TIMEOUT, enabled = true) 

Và trong lớp TestBase của tôi, tôi có thành viên này:

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5); 

Khi tôi sử dụng dòng trên mã, tôi nhận được một 'giá trị thuộc tính phải được liên tục' lỗi trong Eclipse.

Nhưng, nếu tôi chỉ cần xác định các thành viên như vậy, nó hoạt động:

public final static long TESTNG_TEST_TIMEOUT = 300000; 

là việc sử dụng các TIMEUNIT không phải là một hằng số?

+1

Nhưng lưu ý rằng bạn có thể * có thể * sử dụng một khối init tĩnh để phá vỡ vấn đề này. –

+0

Ahh. Tư tưởng thú vị. Cảm ơn. – djangofan

Trả lời

19

này

public final static long TESTNG_TEST_TIMEOUT = 300000; 

là một constant variable, một loại constant expression.

này

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5); 

thì không.

Thành viên chú thích expect biểu thức không đổi (và một vài thứ khác như enums và Class literals).

+3

Cảm ơn các siêu liên kết. Tôi có thể thấy rằng tài liệu nói rằng hằng số phải là một chuỗi nguyên thủy hoặc một chuỗi được khai báo trước. Cảm ơn. – djangofan

+0

Tôi cũng sẽ thêm tĩnh cuối cùng công khai dài TESTNG_TEST_TIMEOUT = 50; là biến số không đổi, nhưng tĩnh cuối cùng công khai dài TESTNG_TEST_TIMEOUT = 50 + 60; không phải là. – javadev

+0

@java Trên thực tế, đúng vậy. –

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