有條件地忽略JUnit 4中的測試好吧,那么@Ignore注釋有助于標記不應該運行測試用例。但是,有時我想忽略基于運行時信息的測試。例如,如果我有一個并發測試,需要在具有一定數量核心的機器上運行。如果這個測試是在單處理器機器上運行的,我不認為只通過測試是不正確的(因為它還沒有運行),并且肯定不應該失敗測試并破壞構建。因此,我希望能夠在運行時忽略測試,因為這似乎是正確的結果(因為測試框架將允許構建通過,但記錄測試沒有運行)。我確信注釋不會給我這種靈活性,并懷疑我需要手動為所討論的類創建測試套件。但是,文檔中沒有提到任何關于這一點的內容,而是查看了API還不清楚如何以編程方式(即如何以編程方式創建Test或與由@Ignore注釋?)如果有人在過去做過類似的事情,或者對其他事情有一個很好的想法,我會很高興聽到的。
3 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
org.junit.Assume
.
@Before public void beforeMethod() { org.junit.Assume.assumeTrue(someCondition()); // rest of setup. }
@Before
@After
@Before
@BeforeClass
假設失敗導致測試被忽略。
編輯:@RunIf
@Testpublic void calculateTotalSalary() { assumeThat(Database.connect(), is(notNull())); //test code below.}
Database.connect()

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
public class CustomRunner extends BlockJUnit4ClassRunner { public CTRunner(Class<?> klass) throws initializationError { super(klass); } @Override protected boolean isIgnored(FrameworkMethod child) { if(shouldIgnore()) { return true; } return super.isIgnored(child); } private boolean shouldIgnore(class) { /* some custom criteria */ }}
添加回答
舉報
0/150
提交
取消