如何将 XCTest 标记为挂起?
How to mark a XCTest as pending?
我有一个 XCTestCase
的子类,我想将一些测试标记为 pending
,方法与 RSpec
相同
https://www.relishapp.com/rspec/rspec-core/v/2-0/docs/pending/pending-examples
没有简单的方法可以做到这一点。最实用的解决方案是注释掉或重命名您的测试:
@implementation MyTestCase
- (void)testSomething { /* ... */ }
// Option 1: Comment out the test.
// - (void)testSomething { /* ... */ }
// Option 2: Rename the test such that XCTest does not consider
// it a valid test method. In order to be "valid", it needs to:
//
// - Have a return type of `void`
// - Take no parameters
// - Begin with "test"
//
// Here, we rename the test so that it does not begin with "test".
- (void)PENDING_testSomething { /* ... */ }
@end
当然,RSpec 的优点之一是它会打印出某种警告。您可以使用 #warning
:
自己添加这些
#pragma Pending!
- (void)PENDING_testSomething { /* ... */ }
这会在 Xcode 中显示警告。请记住,#warning
仅适用于 Objective-C,不适用于 Swift。
像Quick and Specta这样的测试框架提供了未决的例子:
pending("tests something") { /* ... */ }
xit("tests something") { /* ... */ }
xdescribe("describes something") { /* ... */ }
xcontext("provides context for something") { /* ... */ }
这些测试框架通过覆盖 -[XCTestCase testInvocations]
来防止 "pending" 测试 运行。这样做需要做很多工作,但如果您想自己实施 "pending tests",您也可以考虑这样做。
它不完全是挂起的,但如果你的领导认为挂起的测试是一个失败的套件(我是我团队的领导,我确实如此),那么一个简单的 XCTFail()
就可以完成工作:
#pragma mark - Something Tests
- (void)testSomething_scenario_result {
XCTFail(@"Pending Test: %@",NSStringFromSelector(_cmd));
}
如果您出于任何原因(可能是个人开发分支)需要保留待定测试,那么您可以轻松地看到哪些失败是相关的,但是整个套件仍然会失败,直到您完成它。
对于 "true" 待定,modocache 的回答更加完整。
我有一个 XCTestCase
的子类,我想将一些测试标记为 pending
,方法与 RSpec
https://www.relishapp.com/rspec/rspec-core/v/2-0/docs/pending/pending-examples
没有简单的方法可以做到这一点。最实用的解决方案是注释掉或重命名您的测试:
@implementation MyTestCase
- (void)testSomething { /* ... */ }
// Option 1: Comment out the test.
// - (void)testSomething { /* ... */ }
// Option 2: Rename the test such that XCTest does not consider
// it a valid test method. In order to be "valid", it needs to:
//
// - Have a return type of `void`
// - Take no parameters
// - Begin with "test"
//
// Here, we rename the test so that it does not begin with "test".
- (void)PENDING_testSomething { /* ... */ }
@end
当然,RSpec 的优点之一是它会打印出某种警告。您可以使用 #warning
:
#pragma Pending!
- (void)PENDING_testSomething { /* ... */ }
这会在 Xcode 中显示警告。请记住,#warning
仅适用于 Objective-C,不适用于 Swift。
像Quick and Specta这样的测试框架提供了未决的例子:
pending("tests something") { /* ... */ }
xit("tests something") { /* ... */ }
xdescribe("describes something") { /* ... */ }
xcontext("provides context for something") { /* ... */ }
这些测试框架通过覆盖 -[XCTestCase testInvocations]
来防止 "pending" 测试 运行。这样做需要做很多工作,但如果您想自己实施 "pending tests",您也可以考虑这样做。
它不完全是挂起的,但如果你的领导认为挂起的测试是一个失败的套件(我是我团队的领导,我确实如此),那么一个简单的 XCTFail()
就可以完成工作:
#pragma mark - Something Tests
- (void)testSomething_scenario_result {
XCTFail(@"Pending Test: %@",NSStringFromSelector(_cmd));
}
如果您出于任何原因(可能是个人开发分支)需要保留待定测试,那么您可以轻松地看到哪些失败是相关的,但是整个套件仍然会失败,直到您完成它。
对于 "true" 待定,modocache 的回答更加完整。