參考 StackOverflow:
// src/test/java/example/HellpResourceTest.java
package example;
import javax.inject.Inject;
import javax.ws.rs.core.Response;
import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.hk2.utilities.Binder;
import org.glassfish.hk2.utilities.ServiceLocatorUtilities;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import example.HelloResource;
class HelloResourceTest {
@Inject
private HelloResource resource;
private ServiceLocator locator;
@BeforeEach
void setUp() {
Binder resourceBinder = new AbstractBinder() {
@Override
public void configure() {
// bind resource
bindAsContract(HelloResource.class);
// bind mock repository
bind(new MockHelloRepository()).to(HelloRepository.class);
}
};
locator = ServiceLocatorUtilities.bind(repositoryBinder, resourceBinder);
locator.inject(this);
}
@AfterEach
void tearDown() {
if (locator != null) {
locator.shutdown();
}
}
@Test
@DisplayName("Test Hello API")
void doTest() {
Assertions.assertNotNull(resource);
Response response = resource.getHello("World");
System.out.println(response);
Assertions.assertEquals("Hello World", response);
}
}
用到 org.glassfish.hk2:hk2-locator:2.5.0, org.glassfish.hk2:hk2-utils:2.5.0。
參考資料:
沒有留言:
張貼留言