Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Xcode 7测试不';无法运行,但报告成功_Unit Testing_Xcode7_Xctest - Fatal编程技术网

Unit testing Xcode 7测试不';无法运行,但报告成功

Unit testing Xcode 7测试不';无法运行,但报告成功,unit-testing,xcode7,xctest,Unit Testing,Xcode7,Xctest,我试图向我的项目中添加一个测试目标,但是当我运行测试时,似乎实际的测试没有被执行,相反,Xcode总是报告成功,但是指示测试是否通过的小方框仍然清晰 我只有一个测试目标和一个类: @implementation Tests - (void)setUp { [super setUp]; // Put setup code here. This method is called before the invocation of each test method in the cla

我试图向我的项目中添加一个测试目标,但是当我运行测试时,似乎实际的测试没有被执行,相反,Xcode总是报告成功,但是指示测试是否通过的小方框仍然清晰

我只有一个测试目标和一个类:

@implementation Tests

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

- (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    XCTAssert(false, "");
}

- (void)testPerformanceExample {
    XCTAssert(false, "");
}

@end
测试应该失败,但它会显示一个弹出窗口,表示成功。此外,测试报告说没有测试

如果我尝试单独运行测试,测试“成功”,但是我没有得到关于报告的任何信息,正方形仍然为空


关于如何修复它有什么想法吗?

如果您是为iOS构建,您通常会将Xcode设置为在物理设备上运行吗?如果是这样,请尝试将其设置为在iOS模拟器上运行

我发现,如果在物理设备上将Xcode 7设置为,那么单元测试将完全按照您所描述的那样进行。将Xcode设置为在iOS模拟器上临时运行以进行单元测试,立即解决了这个问题,现在它就像一个魔咒一样工作


我希望这能帮助遇到同样问题的人D

关闭iOS设备的电源,然后重新打开电源。您可能还需要卸下USB电缆并重新连接,以便Xcode可以重新建立与设备的通信。当这种情况发生在我身上时,测试会立即报告测试成功,而不会运行测试。我还注意到,当我试图记录一个新的UI测试动作时,Xcode每次都会崩溃——与我第一次启用iOS设置-开发者-启用UI自动化设置之前的行为类似,我记得在启用该设置时,必须重新启动iOS设备,因此我尝试了iOS设备重启,Xcode开始运行在这里,我可以记录并成功运行针对iOS设备的测试。完全披露:在重新启动iOS设备之前,我还打开和关闭了启用UI自动化,但我怀疑这是必需的-rrh

如果这是用于UI自动化测试,那么可能是因为您没有初始化应用程序并启动它

XCUIApplication *app = [[XCUIApplication alloc] init];
[app launch];

我也遇到了同样的问题,清理构建文件夹可以解决这个问题。但是,还有一种更快的方法,即在不构建的情况下执行
产品->执行操作->测试

检查控制台(Command-Shift-Y)

在我的例子中,有一个输出被打印出来,表明测试没有运行的原因。(动态框架的飞行前检查失败了。)但是我没有看到它,因为调试区域被折叠了


同样,在我的案例中,通过将
$(PROJECT_DIR)/Carthage/Build/iOS
添加到我的运行时搜索路径(如上所述)解决了此问题。对于其他面临此问题的人,请检查以确保您的测试类是从XCTestCase继承的,而不是从XCTest继承的。我疯狂地尝试所有这些解决方案,直到我意识到我继承了错误的类。Xcode不会抱怨,它只会说测试成功了,而没有运行它们。希望这对别人有帮助

值得一提的是,对于以后一直坚持这一点的人来说:Xcode只运行以“test”开头的XCTestCase函数。这与其他平台相反,当我开始在iOS中测试时,我感到困惑

这样做的原因是,您可以在测试类中使用一些方便、有用的方法,而这些方法本身并不一定要作为测试调用

在以下测试类中:

类MyBigTest:XCTestCase{
func testSensibleInputReturnSensibleAnswer()函数{
xctasert(/*stuff*/)
}
func setupSomeKindOfData(){
//这里是否设置了一些数据
}
}
测试套件将仅调用
testSensibleInputReturnSensibleAnswer()
setupSomeKindOfData()
函数可能具有许多测试函数将调用的一些共享设置逻辑


此外,有些人喜欢用
\uuu
格式化他们的测试方法名称,以使它们更具可读性。例如:
test\u sensibleAnswer\u sensibleResult()

这是一个老问题,但在我的案例中解决这个问题的方法还没有提到:


您不能(总是?)重命名测试类/用例。创建一个新的类/案例并扔掉旧的。

FWIW我以前使用KIF的
时也遇到了一个非常类似的问题。有时,之前放在
中的代码不起作用,测试仍然会成功返回

它有时也会导致Xcode崩溃。请参阅KIF的Github页面。尽管有人指出,这个问题可能不是因为KIF,而是因为XCTest本身


暂时的解决办法是避免在所有测试之前使用
,而是在每个测试之前使用

我将测试方法标记为
private
,解决方法是简单地删除
private
访问修饰符。

我在创建
Objective-C
测试时遇到了这种情况与现有的
Swift
类同名


只需重命名一个测试文件

您是否设法修复了此问题??我也收到了同样的问题。。它随着XCode更新而消失了。我也有类似的问题:不运行测试,不报告任何内容,简短的提示显示测试失败。重新启动设备修复了它。实际上,启用UI自动化和重新启动设备有助于meso您只需在模拟器上运行测试,通过测试,然后在设备上运行,它就能工作了吗?如果是这样的话,它对我仍然不起作用:/通常是重置手机和/或Xcode和/或删除派生数据helps@raistlin是的,我就是这么做的。如果你在尝试了你提到的所有选项后仍然有问题,那么试着看看这个。用户重新检测提到他必须从模拟器的菜单中“重置iPhone模拟器的内容和设置”,然后尝试我提到的。这也是我的问题。非常感谢。对于我来说,问题是我忘记了从测试模块中取消框架的链接,我之前删除了框架