| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > boost test |
| Автор: Superklug 10.8.2010, 13:33 | ||||||
| Доброго времени суток! Может кто-нибудь пользовался этой библиотекой? Добавил в проект файл test.cpp. Создал конфигурацию UnitTest (в этой конфигурации собирается exe, а в Debug и Release статическая библиотека). В Post build event добавил:
Большинство тестов работают нормально. А вот тесты в которых используются файловые потоки заваливаются... Например такой тест:
После сборки в логе примерно такие сообщения:
Помогите, пожалуйста, разобраться в чем дело... |
| Автор: SenkraD 10.8.2010, 13:47 |
| Superklug, у вас валится new - генерит std::bad_alloc из-за того, что у Microsoft размер массива не должен превышать 0x7fffffff байтов (в стандарт по этому поводу глянить не успел и о других компилерах ничего сказать не могу, под рукой нет). P.S. код ошибки от мелкомягких - C2148 |
| Автор: Superklug 10.8.2010, 13:55 | ||
| Размер файла около 200 байт... Да и потом, если бы было исключение boost его отловил бы. Если написать что-нибудь вроде:
то все работает как надо. А когда делаю это с помощью буста и через Post Build Event, почему-то не работает... |
| Автор: SenkraD 10.8.2010, 14:07 |
| ну там не исключение, а что-то типа assert, который CRT делает. Не спорю, скорее фолит какой-то с tellg из-за чего вы и страдаете. Поставьте свои асерты аля assert(size_1 < 0x7fffffff); и assert(size_2 < 0x7fffffff); или зайдите под дебагом в тесты |
| Автор: maxim1000 10.8.2010, 16:06 |
| 4294967295 это (-1) сильно похоже на то, что просто файлы не найдены для проверки гипотезы можно прописать абсолютные пути и посмотреть, что будет а если проблема в этом - разбираться, с какой текущей директорией запускаются тесты |
| Автор: Superklug 11.8.2010, 07:58 |
| maxim1000, спасибо! Проблема действительно в этом... Помогите пожалуйста настроить проект, чтобы все работало корректно.. Не хочется оставлять абсолютные пути) Сейчас такие настройки: General Output Directory: $(SolutionDir)$(ProjectName)\$(ConfigurationName) Intermediate Directory: $(ConfigurationName) Linker Output File: $(OutDir)\$(ProjectName)_test.exe Build Events / Post Build Event Command: "$(TargetPath)" --result_code=no --report_level=short Если с настройками все в порядке, подскажите относительно чего нужно задавать пути? Нужный мне файл лежит в $(TargetDir) |
| Автор: maxim1000 11.8.2010, 11:12 |
| если я не ошибаюсь, текущая директория во время билда - директория проекта но это можно и выяснить экспериментально - просто вывести текущую директорию в post-build event (что-то типа echo %CD%) |
| Автор: Superklug 11.8.2010, 11:45 | ||
Да, так и есть... Спасибо! |
| Автор: Superklug 12.8.2010, 12:44 | ||
| У меня опять проблема( Для тестирования другого проекта (dll Библиотека) решил сделать отдельный проект. При попытке вызова какой-либо функции из dll возникает ошибка. Вызываю так:
Если написать свой int main() (без буста), то все вызовы работают нормально.. В чем может быть проблема? |