我创建了一个测试项目并注意到XCode生成了一个名为的测试类: YourProjectName-ProjectTests
这就是它的样子:
- (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.
XCTAssert(YES, @"Pass");
}
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
}
有人能够解释我如何使用这些自动化测试方法吗?有关于此的官方文件吗?
这些测试是用作UI测试还是应用程序代码测试?或两者?
答案 0 :(得分:1)
这是在Xcode中实现单元测试的方式。
setUp和TearDown方法用于准备测试单元所需的任何模拟数据(这是代码的选择部分)。
这两种测试方法只是一个例子。通常作为代码单元的作者,你很清楚该单元应该做什么,不应该做什么。
使用测试方法,您可以测试设备如何满足假设和期望。惯例是对单元行为的每个假设/期望有一个单独的测试方法。
例如,给定的类处理具有使所有字符串生成CAPS的方法的字符串,您将测试传递任何随机的nonCaps字符串仍将返回所有CAPS。 put none truing作为参数将返回nil或error。
所以基本上你测试你的单位表现得像预期的那样。
单元测试背后有一个完整的理论,这超出了这个线程的范围。只是Google吧。
答案 1 :(得分:1)
您通过XCTest
执行UI测试,但它是专为单元测试而设计的。 Instruments具有UI Automation,专为UI测试而设计。
开放XCTestAssertions.h
将为您提供XCTest中包含的内容的非常好的参考。通常所有断言都遵循类似的模式:
XCTAssertSomething(somethingBeingTested, @"A message to display if the test fails");
点击⌘5将打开测试导航器,它允许您运行所有测试,所有失败的测试或单个测试。您还可以通过单击编辑器中方法名称左侧的菱形来运行测试。
以下是使用XCTest
进行单元测试时遇到的一些提示:
断言中的最后一个参数是可选的,但在某些情况下,它可用于描述您正在寻找的行为。
测试不按任何特定顺序运行,但您的测试无论如何也不应相互依赖。
模拟对象让你测试远远超过基本断言。我喜欢OCMock。
您可以在测试中use instruments进行调试。
最后,如果您有权访问另一台计算机,您可以每天或每次提交时将OSX服务器设置为automatically run your tests,并在任何测试失败时通知您。