У меня есть следующее перечисление Java:
enum IssueMap {
ISSUE_TYPE,
public static .... getIssueTypes(String IssueName) {
return ...;
}
}
Обратите внимание, что у меня нет открытого ключевого слова перед перечислением!
Я хочу вызвать этот код в тесте JUnit следующим образом:
@Test
public void genericTest() {
....... = IssueMap.getIssueTypes(....);
assertNotNull(...);
}
Я получаю ошибку 'com.IssueMap' is not public in 'com....'. Cannot be accessed from outside package
Я не могу изменить исходный код перечисления. Есть ли какое-то решение с отражением, например, для доступа к коду перечисления?
Поместите свой модульный тест в пакет «com»
перечисления являются пакетными по умолчанию. Поэтому предложение от @JustanotherJavaprogrammer должно работать.
Что такое «публичный интрон»? А если вам нужен доступ извне, то почему он закрытый?
как IssueMap.getIssueTypes(....) используется в вашем коде? Перечисление не является общедоступным, другими словами, это деталь реализации, инкапсулированная в более крупный вариант использования. Например, если ServiceX использует эти типы задач при реализации methodY, возможно, достаточно протестировать только ServiceX.methodY().
@EmanuelTrandafir вызывается в том же пакете
@PeterPenzov, но в конечном итоге он должен быть вызван каким-то общедоступным методом, даже если этот метод является частью другого класса.




Ваше перечисление IssueMap не является приватным, а приватным для пакета. Если ваш тестовый класс находится в том же имени пакета, что и ваше перечисление IssueMap, тогда ваш тестовый класс должен иметь доступ к перечислению IssueMap без изменения перечисления IssueMap.
package com.myenum;
enum IssueMap {
ISSUE_TYPE,
public static .... getIssueTypes(String IssueName) {
return ...;
}
}
package com.myenum;
class IssueMapTest {
@Test
public void genericTest() {
....... = IssueMap.getIssueTypes(....);
assertNotNull(...);
}
}
Обратите внимание, что имя пакета в IssueMap и IssueMapTest совпадает. Несмотря на то, что мой путь к IssueMap — src/main/java/com/myenum/IssueMap.java, а путь к IssueMapTest — src/test/java/com/myenum/IssueMapTest.java
Поместите тест в тот же пакет, что и перечисление.