ユニットテストで未修正のオブジェクトにsetUp/tearDownを使用していますか?単体テストで修正されていないオブジェクトにsetUp/tearDownを使用していますか?
問題のオブジェクトを変更し、その状態を追跡する必要があるかどうかはわかっていますが、setUp/tearDownメソッドを使用すると明らかに有益ですが、変更されていないオブジェクトについてはどうでしょうか?
以下の例のmyObj
がテスト対象のオブジェクトであることを明確にする必要があります。
class MyTests: XCTestCase {
var myObj: MyObj?
override func setUp() {
super.setUp()
myObj = MyObj()
}
override func tearDown() {
myObj = nil
super.tearDown()
}
...
}
対
class MyTests: XCTestCase {
let myObj = MyObj()
...
}
EDIT:https://youtu.be/4-KrgRH_Yb0?t=7m57s:私のためにこの質問をきっかけに何がTDDについてのビデオコーディングジョン・リードの最近の品質を見ていました。彼がどのようにsut
をsetUp
とtearDown
にリファクタリングするかに注目してください。私はなぜインスタンス変数として宣言したときに初期化していないのだろうと思っていました。
私はこの質問がより深い何かの縁の周りで踊っているように感じます。上で説明したケースはかなり明白です。複数のサブクラステストで使用される静的な文字列は、おそらく、基本クラスのクラスプロパティとして最もよく宣言されています。あなたが答えようとしているより微妙な質問がありますか? – Palpatim
@Palpatimなぜ私が尋ねているのか私の編集を見てください。 –
プログラマチックであるためには、テストの対象ではないオブジェクトは通常どおりクラスレベルのオブジェクトにすることができ、テストの対象であるオブジェクトは初期設定し、 'setup'や' teardown '。そのようなルールはあなたを助けますか? – jboi