首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS -在UI测试和应用程序之间共享实例/内存

iOS -在UI测试和应用程序之间共享实例/内存
EN

Stack Overflow用户
提问于 2017-03-07 03:07:13
回答 1查看 795关注 0票数 0

有没有办法在应用程序和正在运行的UI测试之间共享实例/数据?我的理解是,它们作为两个不同的应用程序运行,这使得它不可能实现,但我想检查一下。我在想像这样的东西:

代码语言:javascript
运行
复制
// included in both my app and the UI test
class Foo {
  let shared: Foo()
  var value = ""
}

// In the UI test:
class BasicAccessibility: XCTestCase {
  func testFoo() {
    Foo.shared.value = "bar"
  }
}

// In the app
class FooController: UIViewController {
  override func viewDidLoad() {
    label.value = Foo.shared.value
  }
}

我试图从UI测试中模拟设备陀螺仪,因此在我的示例中,Foo将是某个陀螺仪管理器实例。我最好的选择是在应用程序中包含一个测试可以交互的UI元素,这是很糟糕的。

===编辑===

我不认为This question是相似的,因为它不是关于UI测试的,并且UI测试应用程序具有与普通应用程序不同的设置和功能。

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 14:02:25

我不知道这是不是一个非常好的想法,但这是我正在尝试的东西,而且似乎效果很好。如果有人知道这么做的一个非常糟糕的原因,请让我知道。

创建一个名为Person.swift的文件,并将其添加到应用程序目标和UITestTarget中。

代码语言:javascript
运行
复制
struct Person: Codable {
    let name: String
    let age: Int
    let height: Int
    let weight: Int
}

在您的UITests中“序列化”对象并通过启动环境字典发送它。

代码语言:javascript
运行
复制
class UITestingDataUITests: XCTestCase {

    let app = XCUIApplication()

    override func setUp() {
        continueAfterFailure = false

        let person = Person(name: "Tom Cruise", age: 56, height: 170, weight: 60)
        let json = String(data: try! JSONEncoder().encode(person), encoding: .utf8)

        continueAfterFailure = false
        app.launchArguments.append("isUITesting")
        app.launchEnvironment["custom-object-person"] = json
        app.launch()
    }

在你的应用委托中访问对象:

代码语言:javascript
运行
复制
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {

        let personInfo = ProcessInfo.processInfo.environment["custom-object-person"]!
        let person = try! JSONDecoder().decode(Person.self, from: personInfo.data(using: .utf8)!)
        print(person)

        return true
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42633630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档