次のメソッドを使用して、シングルトン クラスの動作をテストしたいと考えています。
public class SomeSingleton
{
private final static int DEFAULT_VALUE1 = ...;
private final static int DEFAULT_VALUE2 = ...;
private static SomeSingleton instance;
public static void init(int value1, int value2)
{
if (instance != null)
{
throw new IllegalStateException("SomeSingleton already initialized");
}
instance = new SomeSingleton(value1, value2);
}
public static getInstance()
{
if (instance == null)
{
init(DEFAULT_VALUE1, DEFAULT_VALUE2);
}
return instance;
}
}
init
そして、複数回呼び出すいくつかのテスト メソッドを持つテスト クラスがあります。
@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeSingleton.class)
public class SomeSingletonTest {
@Test
public void testGetInstanceSunnyDay()
{
[...]
SomeSingleton.init(...);
[...]
SomeSingleton.getInstance();
[...]
}
@Test
public void testGetInstanceRainyDay()
{
[...]
SomeSingleton.init(...); // IllegalStateException
[...]
SomeSingleton.getInstance();
[...]
}
}
このようにするとIllegalStateException
、instance != null
.
init
1 つのテスト クラスに関連する複数のテストを実行するにはどうすればよいですか?
testGetInstanceSunnyDay
とを 2 つの別々testGetInstanceRainyDay
のクラスに入れることで問題は解決しますが、より良い解決策があるかどうか疑問に思っています。