機能が現在無効になっている場合、特定のテストを実行したくありません。テストを「スキップ」する方法(およびコンソールで適切なフィードバックを取得する方法)はありますか?
このようなもの:
func testSomething() {
if !isEnabled(feature: Feature) {
skip("Test skipped, feature \(feature.name) is currently disabled.")
}
// actual test code with assertions here, but not run if skip above called.
}
私がいくつかの記事で見つけた別の可能な解決策:スキップしたテストの前に「skipped_」のようなものを付けます
利点:
これを行う方法は、UIテストの.xcschemeファイルを変更し、TestableReferenceの下にSkippedTestsというセクションを追加してから、「Identifier」属性を持つ個々のテストタグをクラスとテストメソッドの名前で追加することで見つけました。何かのようなもの:
<SkippedTests>
<Test Identifier="ClassName/testMethodName" />
</SkippedTests>
お役に立てれば
テストケースのスキップはありません。 if-else block:nestedを使用して、目的の出力を実行/印刷できます。
残念ながら、組み込みのテストケースのスキップはありません。テストケースは成功または失敗します。
つまり、その機能を自分で追加する必要があります。XCTestCase
に関数を追加できます(例:XCTestCase.skip
)情報をコンソールに出力するカテゴリを介して。ただし、他のアサートが実行されないようにするには、その後にreturn
を配置する必要があります。
これは、テストスキームの目的です。さまざまなテスト状況やニーズを対象とするさまざまなスキームを使用できます。たとえば、すべてのテストを実行するスキーム(完全回帰スキーム)を作成したり、小さな変更が加えられたときにアプリでクイックスモークテストを実行するためにそれらの一部を選択したりできます。このように、必要なテストの量に応じて、さまざまなスキームを選択できます。に行くだけ
Product >> Scheme
xcode 8で可能になりました。別の質問で私の投稿を確認してください:
これはそれほど一般的ではありませんが、XCTestCaseでinvokeTest
をオーバーライドして、必要に応じてsuperを呼び出さないようにすることができます。コンソールでの適切なフィードバックについてはわかりません。
たとえば、次のフラグメントは、iPhone 7 Plus/iPad Pro 9.7 "/ iOS 11.4を搭載したiOSシミュレータでのみテストを実行します。
class XXXTests : XCTestCase {
let supportedModelsAndRuntimeVersions: [(String, String)] = [
("iPhone9,2", "11.4"),
("iPad6,4", "11.4")
]
override func invokeTest() {
let environment = ProcessInfo().environment
guard let model = environment["SIMULATOR_MODEL_IDENTIFIER"], let version = environment["SIMULATOR_RUNTIME_VERSION"] else {
return
}
guard supportedModelsAndRuntimeVersions.contains(where: { $0 == (model, version) }) else {
return
}
super.invokeTest()
}
組み込みのテストケースをスキップしない場合、_cmd-/
のような検索可能なパターンを使用したComment Selection
:TEST:SKIP: reason
コマンドは、シンプルで便利です。意味のあるメッセージをコンソールに出力します。
func testSomeFeature() {
print(":TEST:SKIP: testSomeFeature disabled pending ...")
// ... skipped selection ..
}
後で、someFeature
を更新すると同時にsomeFeatureTest
のコメントを外します。
:SKIP:
などの検索パターンを使用すると、スキップされたすべての機能とテストをソースコードとコンソール出力で見つけることができます。
注:cmd-/
'//'スタイルのコメントは、Re-Indent
コマンドの後のコードインデントを維持します。/*... * /スタイルのコメントは、コードインデントが保存されます。