XCTest 测试 C 函数构建失败

Posted

技术标签:

【中文标题】XCTest 测试 C 函数构建失败【英文标题】:XCTest test C function build Failed 【发布时间】:2015-12-25 15:38:41 【问题描述】:

我写了一个 C 函数,当我想在 Xcode 中使用 XCTest 测试这个函数时,得到一个错误。


List.h 有一个函数定义。

#ifndef List_h
#define List_h

#include <stdio.h>

List initList();

#endif /* List_h */

Test.m代码 #进口 #include "List.h"

@interface ListTest : XCTestCase

@end

@implementation ListTest

- (void)testExample 
    initList();


@end

当我按下 command + U 时,构建失败!

错误信息:

Undefined symbols for architecture i386:
  "_initList", referenced from:
      -[ListTest testExample] in ListTest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

帮助,谢谢。

【问题讨论】:

【参考方案1】:

我找到了原因。

我需要将实现文件(*.c 文件)添加到单元测试目标中,以便编译进去。仅包含标头是不够的。

【讨论】:

如果你必须在你的测试目标中包含一个实现文件,你的东西设置不正确。我刚刚创建了一个全新的项目,并且能够从我的测试中调用我的 C 函数,没问题。

以上是关于XCTest 测试 C 函数构建失败的主要内容,如果未能解决你的问题,请参考以下文章

XCTest 显示已删除测试的结果

AWS Device Farm 的 XCTest 单元和 UI 测试

XCTest的setUp函数报错怎么办?

快速使用 XCTest 时不会出现编译错误

构建 Swift 框架测试失败

如何为自定义 XCTest 断言编写自动化测试?