TemporaryFolder
@Rule
を使用するJUnitテストがあります。これは完璧に動作時間のほとんどJUnit @Ruleライフサイクルと@Beforeのやりとり
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Before
public void init() {
folder.newFile("my-file.txt");
}
@Test
public void myTest() { ... }
:彼らは、いくつかのセットアップを実行するために@Before
方法でTemporaryFolder
を使用しています。しかし、SpringJUnit4ClassRunner
を使用すると、私のTemporaryFolder
インスタンス内のStatement
が適用される前にinit()
メソッドが呼び出されることがあります。このため、folder
がinit()
以内で使用され、ファイルが/tmp
ではなく作業ディレクトリにある場合、一時フォルダの場所は設定されていません(null
)。
したがって、@Before
メソッドがルールより先に実行されることがありますが、明確なパターンを確立できません。私はときどき私自身のルール実装のいくつかに似た問題を見ることがあります。
設定方法の前にルールステートメントを適用する方法はありますか?
好きな@pholser。私はJUnit 4.8.xを使用していますが、それは4.10と同じ順序でチェーンを構築するように見えます。ただし、methodBlock()はSpringJUnit4ClassRunnerでオーバーライドされ、JUnit 4.7と同様の順序を設定します。 – teabot