Я пишу тест для класса, у которого есть статические методы от JMockit.Некоторые методы получают тип Class в качестве параметра.Я предоставляю этот класс для метода следующим образом:
entityClass = User.class.getClass();
и пишу тест для метода findTableName()
следующим образом:
private static Class entityClass;(**edited**)
@BeforeClass
public static void initial() {
entityClass = User.class.getClass();
}
@Test
public void testGenerateQuery_findTableName(){
String result = Deencapsulation.invoke(QueryGenerator.class, "findTableName",entityClass);
assertEquals("user", result);
}
и findTableName()
в этом классе: ( Отредактировано )
public class QueryGenerator {
private static Logger logger = LogManager.getLogger("E_logger");
private static String findTableName(Class clazz) {
Table table = null;
try {
table = (Table) clazz.getDeclaredAnnotation(Table.class);
} catch (Exception e) {
logger.error("error in find @Table annotation in " + clazz.getSimpleName() + " class\n Exception : " + e);
}
return table.name();
}
}
Проблема заключается в том, что после запуска теста я получаю исключение NullPointerException, поскольку параметр clazz
в findTableName () получает нулевое значение при инициализации втест в @Before
часть.
Я использую @RunWith(MockitoJUnitRunner.class)
& @SpringBootTest
&
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.24</version>
<scope>test</scope>
</dependency>
Где моя ошибка?Как мне написать правильный тест для этого метода?
, если я хочу написать его PowerMock, как мне написать?