当前位置: 首页 > 知识库问答 >
问题:

如何将我的应用程序模块导入我的应用程序测试文件?

宦文柏
2023-03-14

这是我的简单测试用例:

import XCTest
@testable import MyApp //it doesn't work

正因为如此:

class TabBarControllerTests: XCTestCase {

    override func setUp() {
        super.setUp()

        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject([], forKey: DBTabBarOrderedIndexesKey) //key is undefined, because of lack of my app module
        defaults.synchronize()

        continueAfterFailure = false
        XCUIApplication().launch()
    }

    func testIsOrderOfTabsSaved() {

        XCUIApplication().tabBars.buttons["Catering"].tap()
        //what next?
    }
}

点击uitabaritem后,我会更改DBAppSettings的值。模式,所以我想在这里访问我的数据库设置。模式属性,以检查是否真的发生了更改。

我注意到有一件奇怪的事情,当我构建我的应用程序并检查构建的内容时,我的UITest目标没有构建。这很重要吗?

共有3个答案

闻人飞翼
2023-03-14

与其让你的测试知道你的应用程序,不如试着把它转过来,让你的应用程序知道它正在被测试。一种方法是使用启动参数属性:

    app = XCUIApplication()
    app.launchArguments.append("TestMode")
    app.launch()

然后在你的应用程序中:

    if NSProcessInfo.processInfo().arguments.contains("TestMode") {
        // I am running in test mode
    }

在您的情况下,应用程序可以相应地设置NSUserDefaults。

南宫喜
2023-03-14

UI测试中需要访问的每个对象都必须是UI测试目标的一部分。这包括对象依赖。这是一个滑坡,相当混乱。

蓟浩旷
2023-03-14

这是苹果公司的回应:

UI测试的执行方式不同于单元测试——单元测试在应用程序进程内部运行,因此它们可以访问应用程序代码。UI测试在应用程序之外的单独流程中执行,因此它们可以模拟用户与应用程序的交互方式。不希望您能够通过UI测试访问应用程序类。

 类似资料:
  • 问题内容: 我刚刚在我的express应用程序中添加了shouldjs和mocha进行测试,但是我想知道如何测试我的应用程序。我想这样做: 当然,测试套件中的最后一个测试只是告诉med,res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器未运行且配置尚未完成。所以我想知道其他人如何设置他们的测试? 问题答案: 好的,虽然测试路由代码是您可能

  • 我去了我的应用服务 在那里我启用了:应用程序日志记录(Blob)和Web服务器日志记录(存储) 上面的设置开始记录一个. log文件,其中每一行都是对我的应用的HTTP请求,标题如下: 我感兴趣的是为服务器响应HTTP 500的请求记录发布的JSON。我如何从Azure门户实现这一点?

  • 问题内容: 我有一个Node项目,该项目正在使用Bundler和Guard处理我的预编译步骤。这意味着我在项目的根目录中有一个Gemfile以及package.json文件。 我的问题是Heroku认为我的项目是Ruby应用程序,仅因为Gemfile存在。并且抱怨我还没有提交我不想提交的Gemfile.lock。 有没有办法告诉Heroku该应用程序是Node应用程序而不是Ruby应用程序? 问题

  • 问题内容: 我想挂断来电,检测到它,然后挂断。 问题是:这没有解决。 我试图将包添加到我的应用程序并创建接口: 但通话并未结束。 在这里,我检测到呼叫,显示toast(已显示),然后尝试挂断,但是正如我首先说的那样,com.android.internal.telephony.ITelephony在创建该程序包之前没有: 我的清单和权限: 问题答案: 该ITelephony接口是内部接口,因此您无

  • 问题内容: 我已经下载了两个罐子。我想导入其中一些包含的类。我该怎么做呢? 这是我的算法课程。我尝试按照以下网站上的说明进行操作,但均无济于事。 http://algs4.cs.princeton.edu/code/ 有一个OSX安装程序(我正在运行Mountain Lion),据说它会将jar添加到您的类路径中。不幸的是,它也安装了Java博士。我宁愿只使用Sublime和Terminal。我以

  • 我想在我的应用程序中添加带有,但一旦我将插件添加到我的应用程序中。yaml,我的应用程序不再运行。下面是错误 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 通用域名格式。Android建设者德兴。DexArchiveMergerException:合并dex存档时出错:/Us