In the endeavors to conquer and expand, we have found ourselves now wrestling the beasts of the clouds. After all, the battle of Cloud development with all its gains was expected to be nothing less than enigmatic. Our greatest strategy, anticipated to secure yearning triumph has been laid out and given the most peculiar yet apt name. DevOps. However, there lies within this great strategy…
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Taking advantage of the continuous integration capabilities in Oracle Fusion Middleware 12c "will make your life a lot easier," says Oracle ACE Director Ronald van Luttikhuizen. Watch the video here.
SOA & BPM Partner Community
For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account…
Пришла мне как-то идея новой программы для айФона для подсчета количества явлениий и показа статистки. Ничего сложного и ничего серьезного, за недельку по вечерам думаю напишу. Интерфейс в несколько UIViews и UIViewControllers, да данные записывать в CoreData. Когда я начинал писать SunFollower, я все размышлял о том, как же юнит-тестировать CoreData. И вот вчера, пока создавал проект для новой идеи и разбирался c юнит-тестами, кое-какие идеи появились. О чем и собраюсь поведать. Что такое Core Data, я писать не буду. Это целая отдельная история. Буду считать, что мой читатель знаком с этой технологией.
Xcode 5 проект с юнит-тестами
Если создавать новый проект в Xcode, то он предлагает создать юнит-тесты автоматически. Но что делать если проект уже был создан без юнит-тестов, или юнит-тесты были удалены (как я сделал когда-то по-глупости)?
Юнит-тесты добавляются, если кликнуть на “Add Target..”
Затем выбрать “Cocoa Touch Unit Testing Bundle”
На следующем шаге я оставлю все по умолчанию, но нет ни каких проблем поменять так как удобнее вам.
Светую не менять тип юнит-тестов и оставить их XCTest.
Xcode создаст новый target и добавит все необходимые новые файлы. В моем случае он добавл target “Occurrence Tests” и добавил Occurrence_Tests.m файл к проекту. Файл Occurrence_Tests.m - это загатовка для юнит-тестов:
#import <XCTest/XCTest.h> @interface Occurrence_Tests : XCTestCase @end @implementation Occurrence_Tests - (void)setUp { [super setUp]; // Put setup code here. This method is called before
// the invocation of each test method in the class. } - (void)tearDown { // Put teardown code here. This method is called after
// the invocation of each test method in the class. [super tearDown]; } - (void)testExample { XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); } @end
Теперь можно откомпилировать тест (Product->Build For->Testing или ⇧⌘U) и запустить его (“Product->Test” или ⌘U). Тест должен выполнится с ошибкой “No implementation for “-[Occurrence_Tests testExample]”. Что и ожидаемо.
Кстати, очень полезная вкладка “Test Navigator”, которая показывает список всех тестов и результат их выполнения (для наглядности я добавил еще три теста).
Если навести курсор мышки на один из юнит тестов, то появится маленька кнопка Play ( ▶ ), с помощью которой можно выборочно запускать отдельные тесты на исполнение.
Загатовка для юнит-тестов готова.
CocoaPods и MagicalRecord
Следующий шаг. Устанавливаем MagicalRecord через CocoaPods. Надеюсь вы используете CocoaPods. Нет? о_0 ?! Ок.
CocoaPods, как утверждают разработчики, - это “The best way to manage library dependencies in Objective-C projects.” И они действительно правы - это самый лучший способ подключать библиотеки к проекту. Советую заглянуть на сайт http://cocoapods.org.
Устанавливаем cocoapods через консоль:
$ sudo gem install cocoapods $ pod setup
MagicalRecord - это такая волшебная библиотека, которая превращает работу с CoreData в прогулку по парку. Вместо того чтобы в ручную устанавливать и добавлять библиотеку к проекту для этого используем cocoapods. Для этого в папке, где находится наш проект “.xcodeproj”, создаем файл с названием “Podfile”. Содержание Podfile-файла:
platform :ios, '7.0' pod 'MagicalRecord', '2.2' link_with ['Occurrence', 'Occurrence Tests']
Не забудьте заменить Occurrence и Occurrence Tests, на название target-ов вашего проекта.
После этого в консоле переходим в папку с проектом (там где Podfile) и пишем:
$ pod install
Cocoapods создаст воркспейс “.xcworkspace” файл, подключит к нему проект, который мы создали, создаст новый проект под названием Pods, скачает все необходимые библиотеки для MagicalRecord и сконфигурирует все проекты как надо. Впредь основным файлом будет xcworkspace-файл.
Теперь в проекте есть юнит-тесты и MagicalRecord библоетка подключенная через Pods
Core Data, MagicalRecord и юнит-тесты.
Все необходимое готово, теперь переходим к юнит-тестам для Core Data.
Открываем наш тест файл Occurrence_Tests.m и добавляем header
#import "CoreData+MagicalRecord.h"
Инициализируем Core Data стэк в методе (void)setUp
[MagicalRecord setupCoreDataStackWithInMemoryStore] инициализирует CoreData стэк с типом NSInMemoryStoreType. Одна строчка кода вместо того, чтобы в ручную расписывать всю инициализацию. Magic!
Теперь пишем юнит-тесты.
Вот кусок модели (model) Core Data
А вот, тест, который создает Project и добавляет к нему Question
Сессия 409 на WWDC 2013 “Testing in Xcode 5” - https://developer.apple.com/wwdc/videos/index.php?id=409 (нужен девелоперский аккаунт)
Core Data: Data Storage and Management for iOS, OS X, and iCloud (Pragmatic Programmers), by Marcus S. Zarra
Будьте внимательны. Второе издание. Первое издане сильно устарело.