Upload
7bits
View
70
Download
1
Embed Size (px)
DESCRIPTION
Занятие на спецкурсе в ОмГУ, 2014 год.
Citation preview
Спецкурс ОмГУ-‐2014
Внешние конфиги, сборка, автоматические тесты
Занятие 4
Спецкурс ОмГУ-‐2014
Персистентность (время жизни) – длительность существования данных
Внешние конфиги
Спецкурс ОмГУ-‐2014
Виды персистентности: 1. локальная (стек) – все параметры методов, локальные переменные блоков 2. динамическая (куча) – все, что создано при помощи new, живет до сборки мусора либо до delete
Внешние конфиги
Спецкурс ОмГУ-‐2014
Виды персистентности: 3. глобальная (сегмент данных) – все статические поля классов и глобальные переменные 4. дисковая – все, что сохранено в файлы на диске – в БД или просто в файловой системе
Внешние конфиги
Спецкурс ОмГУ-‐2014
Время связывания переменных: 1. при написании кода – использование «магических чисел» 2. при компиляции – использование именованных констант
Внешние конфиги
Спецкурс ОмГУ-‐2014
Время связывания переменных: 3. при загрузке программы – чтение значения из внешнего источника (config file) 4. при создании объекта – любой способ, но в момент создания объекта
Внешние конфиги
Спецкурс ОмГУ-‐2014
Время связывания переменных: 5. по требованию – в любой момент работы программы
Внешние конфиги
Спецкурс ОмГУ-‐2014
Важно: чем раньше время связывания, тем ниже гибкость и ниже сложность кода. Обеспечивайте уровень гибкости, удовлетворяющий требованиям, но не больше!
Внешние конфиги
Спецкурс ОмГУ-‐2014
Внешние конфиги в Java: 1. файлы .properdes 2. файлы XML 3. бинарные файлы (не для людей)
Внешние конфиги
Спецкурс ОмГУ-‐2014
Файлы .properHes: 1. пары <ключ>=<значение> 2. # -‐ однострочный комментарий Пример: tabSize = 4 useSpaces = true
Внешние конфиги
Спецкурс ОмГУ-‐2014
Файлы XML: <?xml version="1.0" encoding="UTF-‐8" ?> <!DOCTYPE log4j:configuradon SYSTEM "log4j.dtd”> <log4j:configuradon xmlns:log4j=h�p://jakarta.apache.org/log4j/> <appender name="console" class="org.apache.log4j.ConsoleAppender”> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.Pa�ernLayout”> <param name="ConversionPa�ern" value="aa %p %c: %m%n"/> </layout> </appender> <!-‐-‐Корневой logger-‐-‐> <root> <priority value ="debug" /> <appender-‐ref ref="console" /> </root>
Внешние конфиги
Спецкурс ОмГУ-‐2014
Цели создания внешних конфигов: 1. увеличить гибкость 2. избежать перекомпиляции 3. настроить под систему 4. перенести настройки в другую систему
Внешние конфиги
Спецкурс ОмГУ-‐2014
Сборка проекта – получение из исходного кода и ресурсов (config файлов, картинок, стилей и т.д.) исполняемого модуля
Сборка проекта
Спецкурс ОмГУ-‐2014
Примеры сборки: 1. создание файла .exe при помощи утилиты make из файлов .cpp, .h, .rc и т.д. 2. создание .class или .jar файлов при помощи javac – только для десктопных приложений
Сборка проекта
Спецкурс ОмГУ-‐2014
Сборка Java-‐программ: 1. Apache Ant – низкоуровневый сборщик, все файлы внутри проекта, может многое, стиль императивный 2. Apache Maven – использует внешние репозитории кода, стиль декларативный, поддерживает версионность библиотек, чувствителен к соглашениям
Сборка проекта
Спецкурс ОмГУ-‐2014
Сборка Java-‐программ: 3. Gradle – используется код на Groovy, стиль императивный 4. Ivy – дальнейшее развитие Ant
Сборка проекта
Спецкурс ОмГУ-‐2014
Apache Ant: 1. в корне проекта build.xml 2. может использовать .properdes файлы 3. пример 4. сайт
Сборка проекта
Спецкурс ОмГУ-‐2014
Apache Maven: 1. в корне проекта pom.xml 2. построен на плагинах (plug-‐in) 3. пример 4. сайт
Сборка проекта
Спецкурс ОмГУ-‐2014
Регрессионное тестирование – любой вид тестирования, позволяющий обнаружить ошибки в уже протестированном коде
Автотесты
Спецкурс ОмГУ-‐2014
Модульное тестирование – автоматизированная проверка функций (методов) независимо от остального кода
Автотесты
Спецкурс ОмГУ-‐2014
Модульный тест – любой код, который вызывает функцию (метод), передавая ей входные параметры, и проверяет постусловие и инвариант
Автотесты
Спецкурс ОмГУ-‐2014
Основные принципы: 1. независимость – глобальные объекты в одном состоянии до и после теста 2. быстрота выполнения – иначе не будут часто запускать
Автотесты
Спецкурс ОмГУ-‐2014
Преимущества использования: 1. поощряются изменения и рефакторинг 2. используются интерфейсы 3. сокращается время на ручное регрессионное тестирование
Автотесты
Спецкурс ОмГУ-‐2014
Инструментарий: 1. библиотека xUnit от Кента Бека (JUnit для Java) 2. прогон тестов в IDE 3. команды в Ant и настройки в Maven 4. Condnuous integradon сервера (позже)
Автотесты
Спецкурс ОмГУ-‐2014
Test driven development (разработка через тестирование): написание теста предшествует реализации, реализация постепенно совершенствуется, чтобы проходить новые тесты
Автотесты