2016-04-06 86 views
1

時更換StricAssertions斷言我們有一個進口的問題與Eclipse:Eclipse的組織導入

測試類使用Assertions.assertThat

當按下Ctrl + Shift + O組織進口,Eclipse的替代斷言。 assertThat與StrictAssertions.assertThat

import static org.assertj.core.api.Assertions.assertThat; 

import org.junit.Test; 

public class TheTest { 

    @Test 
    public void testName() { 
     assertThat(2).isEqualTo(2); 
    } 
} 

被替換爲:

import static org.assertj.core.api.StrictAssertions.assertThat; // change here ! 

import org.junit.Test; 

public class TheTest { 

    @Test 
    public void testName() { 
     assertThat(2).isEqualTo(2); 
    } 
} 

而且,當我們有一些僅在斷言(用於列表)的特定斷言時,Eclipse會將StrictAssertions添加到導入。

import static org.assertj.core.api.Assertions.assertThat; 

import java.util.ArrayList; 

import org.junit.Test; 

public class TheTest { 

    @Test 
    public void testName() { 
     assertThat(2).isEqualTo(2); 
     assertThat(new ArrayList<>()).isEmpty(); 
    } 
} 

改爲:

import static org.assertj.core.api.Assertions.assertThat; 
import static org.assertj.core.api.StrictAssertions.assertThat; // this import was added 

import java.util.ArrayList; 

import org.junit.Test; 

public class TheTest { 

    @Test 
    public void testName() { 
     assertThat(2).isEqualTo(2); 
     assertThat(new ArrayList<>()).isEmpty(); 
    } 
} 

看來,斷言延伸StrictAssertions,所以他們是使用StrictAssertions沒有問題的,但爲什麼就是Eclipse不使用擴展的類?

回答

1

看起來像,因爲assertThat(int actual)定義在StrictAssertions而不是隱藏的Assertions,Eclipse決定從StrictAssertions導入。

此外,爲組織進口Eclipse似乎忽略類型過濾器 - 所以即使這不會幫助。

看來,斷言延伸StrictAssertions,所以他們是使用StrictAssertions

不適合您當前設置沒有問題,但StrictAssertions已與AssertJ 3.2.0刪除。所以當升級到更新版本的AssertJStrictAssertions將會阻礙你。

我建議您升級到3.2.0或更高版本,如果它可能與您的項目。

+0

好吧,看來測試使用 assertThat(文件).hasSameContentAs(refFile); 沒有通過任何更多... 但試圖檢查2個虛擬文件時,它正在工作... – GaspardP

+0

@GaspardP嗯,在我的測試工作。你設置/檢查文件編碼? – nyname00

+0

那麼,我們找到了一個方法: hasSameContent比較V3.2.0中的2個字符串,並與V3.1.0中的二進制文件進行比較。 ,在我們的測試中,我們需要比較二進制文件。 – GaspardP