前言 SwiftMonkey 是一個不錯的自動測試工具。但是網上的OC整合SwiftMonkey都太麻煩。他們都是用拖拽檔案的方式整合的。這次我用的是CocoaPods的方式整合,整個過程很簡單。
0 Xcode,MAC,CocoaPods環境。如果有人真沒有CocoaPods環境,去配置一下吧。
先說一下target。我們建立一個專案,這個專案是project,建立專案的時候預設會建立一個同名的target。一個專案下可以有多個target。可以運用這個特性來配置一個專案的不同使用環境。
1 首先要有一個應用。。。(當然了)。
我建立了一個叫 SwiftMonkeyTest 的應用。
2 要保證應用中有一個swift的UITests target。
2.1 如果沒有就建立一個。
2.2 如果是OC的刪了建立一個。
3 配置Podfile,然後 Pod install。
4 選擇SwiftMonkey兩個包的swift版本
5 在你新建的target的xxTestUITests替換如下程式碼。
import XCTest
import SwiftMonkey
class SwiftMonkeyExampleUITests: XCTestCase {
override func setUp() {
super.setUp()
XCUIApplication().launch()
}
override func tearDown() {
super.tearDown()
}
func testMonkey() {
let application = XCUIApplication()
// Workaround for bug in Xcode 7.3. Snapshots are not properly updated
// when you initially call app.frame, resulting in a zero-sized rect.
// Doing a random query seems to update everything properly.
// TODO: Remove this when the Xcode bug is fixed!
_ = application.descendants(matching: .any).element(boundBy: 0).frame
// Initialise the monkey tester with the current device
// frame. Giving an explicit seed will make it generate
// the same sequence of events on each run, and leaving it
// out will generate a new sequence on each run.
let monkey = Monkey(frame: application.frame)
//let monkey = Monkey(seed: 123, frame: application.frame)
// Add actions for the monkey to perform. We just use a
// default set of actions for this, which is usually enough.
// Use either one of these but maybe not both.
// XCTest private actions seem to work better at the moment.
// UIAutomation actions seem to work only on the simulator.
monkey.addDefaultXCTestPrivateActions()
//monkey.addDefaultUIAutomationActions()
// Occasionally, use the regular XCTest functionality
// to check if an alert is shown, and click a random
// button on it.
monkey.addXCTestTapAlertAction(interval: 100, application: application)
// Run the monkey test indefinitely.
monkey.monkeyAround()
}
}
複製程式碼
6 在Appdelegate中新增如下程式碼
#import <SwiftMonkeyPaws/SwiftMonkeyPaws-Swift.h>
複製程式碼
@property (nonatomic, strong)MonkeyPaws * paws;
複製程式碼
#ifdef DEBUG
self.paws = [[MonkeyPaws alloc]initWithView:self.window tapUIApplication:YES];
#endif
複製程式碼
7 執行下看看,如果沒問題的話,就可以進行Test操作了。
8 問題解決
8.1 如果報ld: library not found for -l錯誤了。
那麼說明你這個專案至少有一定的完成度了,哈哈哈。解決辦法如下:找到Other Linker Flags 新增$(inherited)。如果還不行。把其他的都刪了。
8.2 如果找不到標頭檔案了
用#import <xxxxx/xxxxx.h>的形式應用pod檔案