Link error while building a unit test target

后端 未结 4 1288
礼貌的吻别
礼貌的吻别 2020-12-04 13:15

I have a XCode4 / iOS project with a regular target and unit test target. Everything works fine, except when I try to #import one of my classes in my test class and try to u

相关标签:
4条回答
  • 2020-12-04 13:35

    Another gotcha that you may hit is if your unit test is using C functions (or similar) that aren't used in the actual app.

    This may be restricted to having a sub-project. In my case

    • App
      • Sub-project
        • A C library embedded (i.e. .c and .h files compiled directly inside)

    My unit test used a few of the C functions that were not used anywhere else, and these were stripped from the app binary (NOT from the sub project's .a file).

    The fix is to

    1. turn off "Dead Code Stripping" for the app's Debug build.* and
    2. make sure your unit tests are using Debug and not Release, in the Scheme settings.

    (* don't do this to the release configs as it'll bloat the app with code that is never called).

    0 讨论(0)
  • 2020-12-04 13:39

    Follow the instructions here. It doesn't require you to add any files to compile sources.

    I first missed that "Symbols Hidden by Default=NO" should be for your app target, not test target.

    It worked for me anyway (tm).

    0 讨论(0)
  • 2020-12-04 13:45

    You should only refer to a folder inside your import if your file is inside a framework. Otherwise, once you added your file to the project, simply do #import "FRRCategory.h". Well, unless you did something weird with your Header Search Paths.

    0 讨论(0)
  • 2020-12-04 13:51

    Make sure that the FRRCategory source file has been added to your Compile Sources for your unit test target.

    Xcode 4:

    Project Navigator -> "[Project Name]" -> Under Targets select your unit test target -> Build Phases -> Expand Compile Sources -> Click + at bottom of Compile sources and add the correct source file.

    0 讨论(0)
提交回复
热议问题