Я протестировал его, и он работает с версией 2.3.0 тоже. Не могли бы вы проверить следующий пример? После этого это, вероятно, проблема maven. Тогда нам понадобится дополнительная информация.
Вот мой тестовый сервлет:
@Component(service = Servlet.class,
property = {
SLING_SERVLET_PATHS + "=/bin/servlet/test",
SLING_SERVLET_METHODS + "=GET",
SLING_SERVLET_EXTENSIONS + "=text"
})
@Designate(ocd = TestServlet.Config.class)
public class TestServlet extends SlingSafeMethodsServlet {
@ObjectClassDefinition
public @interface Config {
@AttributeDefinition(
name = "Name",
description = "Name used in the hello world text"
)
String name() default "Alex";
@AttributeDefinition(
name = "Greeting",
description = "Greeting - Morning, to demonstrate the dot-replacement"
)
String greeting_morning() default "Good Morning";
}
private Config config;
@Override
protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().println(this.getGreeting());
}
public String getGreeting() {
return config.greeting_morning() + ", " + config.name();
}
@Activate
void activate(final Config config) {
this.config = config;
}
}
Вот тест JUnit 4:
public class TestServletTest {
@Rule
public final AemContext context = new AemContext();
@Test
public void testWithoutConfig() {
final TestServlet testServlet = context.registerInjectActivateService(new TestServlet());
assertEquals("Good Morning, Alex", testServlet.getGreeting());
}
@Test
public void testWithConfig() {
final Map<String, Object> properties = new HashMap<>();
properties.put("name", "Berndt");
properties.put("greeting.morning", "Keep sleeping");
final TestServlet testServlet = context.registerInjectActivateService(new TestServlet(), properties);
assertEquals("Keep sleeping, Berndt", testServlet.getGreeting());
}
}