我正在为我的项目添加测试,并且所有测试都有一些先决条件,因此我添加了一个 precheck 测试,所有其他测试都依赖于该测试。如果 precheck 失败,那么我希望其他测试立即停止。
Map<Long, Contact> contacts = new HashMap<>();
String[] projection = {Data.CONTACT_ID, Data.DISPLAY_NAME, Data.MIMETYPE, Data.DATA1, Data.DATA2, Data.DATA3};
String selection = Data.MIMETYPE + " IN ('" + Phone.CONTENT_ITEM_TYPE + "', '" + Email.CONTENT_ITEM_TYPE + "', '" + Event.CONTENT_ITEM_TYPE + "')";
Cursor cur = cr.query(Data.CONTENT_URI, projection, selection, null, null);
while (cur != null && cur.moveToNext()) {
long id = cur.getLong(0);
String name = cur.getString(1);
String mime = cur.getString(2); // email / phone / event
String data = cur.getString(3); // the actual info, e.g. +1-212-555-1234
int type = cur.getInt(4);
Log.d(TAG, "got " + id + ", " + name + ", " + data);
Contact contact;
if (contacts.containsKey(id)) {
contact = contacts.get(id);
} else {
contact = new Contact();
contact.name = name;
contacts.put(id, infos);
}
switch (mime) {
case Phone.CONTENT_ITEM_TYPE:
contact.addPhone(data, type); // you'll need to add this method
break;
case Email.CONTENT_ITEM_TYPE:
contact.addEmail(data, type); // you'll need to add this method
break;
case Event.CONTENT_ITEM_TYPE:
contact.addBirthday(data, type); // you'll need to add this method
break;
}
}
但似乎add_test(
NAME precheck
COMMAND false
)
add_test(
NAME test-1
COMMAND true
)
add_test(
NAME test-2
COMMAND true
)
set_tests_properties(
test-1 test-2
PROPERTIES
DEPENDS precheck
)
属性只会影响测试的顺序:
DEPENDS
那么如何才能使失败的预先检查停止其他测试?
答案 0 :(得分:3)
如果您使用的是CMake 3.7或更高版本,则可以使用test fixture相关属性。
对于早期版本的CMake,让您的precheck
测试成功创建一个虚拟文件,其他测试依赖于设置REQUIRED_FILES属性。