CMake & CTest: сделайте тест, не создает тесты

Если вы точно не уверены в том, что делаете, я не предлагаю вам обрабатывать исключение, возвращая 0. Я всегда предпочитаю обрабатывать исключение на самом внешнем стеке и регистрировать исключение, а затем предпринимать надлежащие действия. И если это возможно, я предлагаю вам использовать промежуточное программное обеспечение для обработки ошибок (это зависит от используемой вами структуры, подхода и ситуации).

С другой стороны, вам не нужно обновлять каждый объект один за другим. Вы можете позвонить SaveChangesAsync после всех выполненных операций.

try
{
    foreach (Person person in persons)
    {
        person.Status = Status.Finish;
        person.Changed = DateTime.Now;
        person.Role = Role.Worker;
        MyContext.Persons.AddOrUpdate(person);
    }

    var affectedRows = await MyContext.SaveChangesAsync();
    return (int)(persons.Count == affectedRows);
}
catch (EntityCommandExecutionException ex)
{
    return 0;
}
83
задан claf 9 April 2009 в 09:22
поделиться

1 ответ

возможно ошибка в CMake (ранее отслеживалась здесь ), что это не работает из коробки. Обходной путь должен сделать следующее:

add_test(TestName ExeName)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
                  DEPENDS ExeName)

Затем вы можете запустить make check , и он скомпилирует и запустит тест. Если у вас есть несколько тестов, вам придется использовать DEPENDS exe1 exe2 exe3 ... в приведенной выше строке.

71
ответ дан Flow 24 November 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: