class MetaItetaror(type):
def __iter__(cls):
return iter(
filter(
lambda k: not k[0].startswith('__'),
cls.__dict__.iteritems()
)
)
class Klass:
__metaclass__ = MetaItetaror
iterable_attr_names = {'x', 'y', 'z'}
x = 5
y = 6
z = 7
for v in Klass:
print v
Не уверен, что я полностью слежу за вашим вопросом или нет. Но для проверки статических методов вы можете использовать PowerMockito
. Это правильный способ сделать это.
Вы можете увидеть примеры здесь .
Также см. Один пример класса I, созданный ниже
@RunWith(PowerMockRunner.class)
@PrepareForTest(DriverManager.class)
public class Mocker {
@Test
public void shouldVerifyParameters() throws Exception {
//given
PowerMockito.mockStatic(DriverManager.class);
BDDMockito.given(DriverManager.getConnection(...)).willReturn(...);
//when
sut.execute(); // System Under Test (sut)
//then
PowerMockito.verifyStatic();
DriverManager.getConnection(...);
}
Дополнительная информация
Вот простой юнит-тест для вашего класса.
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import javax.cache.Cache;
import java.lang.reflect.Field;
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class})
public class SomeClassTest {
@Before
public void setup() throws IllegalAccessException {
Cache<String, Integer> cache = Mockito.mock(Cache.class);
Mockito.when(cache.get("Language1")).thenReturn(1);
Field field = PowerMockito.field(SomeClass.class, "cache");
field.set(SomeClass.class, cache);
}
@Test
public void should_return_1_when_Language1_is_the_input() throws Exception {
Integer expectedResult = 1;
Assert.assertEquals(expectedResult, SomeClass.getLanguageId("Language1"));
}
@Test
public void should_return_null_when_input_is_null() throws Exception {
Assert.assertNull(SomeClass.getLanguageId(null));
}
@Test (expected = Exception.class)
public void should_throw_exception_when_unknown_language_is_input() throws Exception {
SomeClass.getLanguageId("UnknownLanguage");
}
}