嗯 重新拉下 应该就行
usleep 你这是老代码了。又新更新了,解决了 elapsedtime >10000 越界的问题。 你 update 新的再试试看?
DispatchQueue.global().async {
if self.elapsedTime != 0{
- usleep(useconds_t(self.elapsedTime))
+ Thread.sleep(forTimeInterval: TimeInterval(self.elapsedTime))
exit(0)
}
我这能一直跑着的。 要不你随机加一些断点?
帮来个 215 楼那个带具体定位。 这个截图没法定位错误。
elapsedtime =10000 就行,不用 *1000*1000 了
嗯 已修改。更新下吧
THX 是个 bug。 U32int 越界了
http://blog.csdn.net/totogo2010/article/details/8949440 按这个增加下崩溃断点。
跑下看具体崩溃到哪里了。
你那里是用新 mode 然后设的 elapsedtime = 0 了?
超时时 我直接 exit 了 所以 xctest 会认为 test failed 。是正常的。后续看看怎么改下 正常结束下
我这里调试没出问题 -_-。 你把那个 xxx.log 发出来看看。
sorry 刚看到 qq 77227005
支持的是微秒,所以 秒 *1000*1000
0 表示不生效
我本地也调式看看。。
你那里把 异常断点打开,再跑次看看崩到哪句里了
开启方法在 120 楼。exception 勾选上
报的错误是什么?
XCTestWDMonkey 我内编码的 bundleID 是我测试用的,这个你那修改的对吧?
Xcode 的手动执行看能跑起来吗? bundleID 改成你自己 app 了吧?
这个就在 server 目录下,工程里自己添加下就行。 我本地开发用的另一套工程怕全拷过来又出最开头那个问题了。
左侧选 server。 File->Add Files to "XCTestWD" -> 选 XCTestWDMonkey.swift ->add
只需要执行第二步就行了
“再问一下可否做到多台设备一起测试”
已更新 应该可以支持你说的需求了 使用新 mode , xcodebuild 时用不同的 -destination 'platform=iOS,name=(your device name)'
已更新 用新 Mode 试下看看
2017.08.29 update
XCTestWDMonkey.swift
public class XCTestWDMonkey {
func swiftmonkey() -> Int {
let bundleID = "com.pandatv.test.meizi" //修改bundleid 为待测app 即可
var app : XCUIApplication!
var session : XCTestWDSession!
let path :String? = nil
app = XCUIApplication.init(privateWithPath: path, bundleID: bundleID)!
app!.launch()
XCTextWDRunner.swift
class XCTextWDRunner: XCTestCase {
var serverMode = true // true 为原server 请求模式, false 为直接启动跑monkey模式
var server: XCTestWDServer?
var monkey: XCTestWDMonkey?
新增加的 XCTestWDMonkey.swift 项目中自行添加下
private func fetchPort() -> in_port_t {
let arguments = ProcessInfo.processInfo.arguments
let index = arguments.index(of: "--port")
var startingPort:Int = Int(portNumber())
if index != nil {
if index! != NSNotFound || index! < arguments.count - 1{
startingPort = Int(arguments[index!+1])!
}
}
var (isValid, _) = checkTcpPortForListen(port: in_port_t(startingPort))
while isValid == false {
startingPort = startingPort + 1
(isValid, _) = checkTcpPortForListen(port: in_port_t(startingPort))
}
return in_port_t(startingPort)
}
查了下代码 原因基本明了。server 启动时会检测端口是否被占用,如果占用则继续检测 +1 端口。直到有空闲端口
所以从 log 上看 你那里 8001 应该是上个 task 还在占用中,本次监测完可能已经建立 8002 连接了。
你这个是不是上一个 session 还在占用着端口,下一次测试就开始了。 感觉像是这样子, 这两天我再改下版。跳过 server 这环节 到时候再试试。
iproxy 没执行成功 或 server 没起来?