Junit ConcurrentTestRunner и @ClassRule - PullRequest
0 голосов
/ 08 января 2019

Как я могу выполнить параллельный тест через JUnit (например, с 100 потоками) в сочетании с ClassRules, такими как ResourceTestRule (dropwizard) и DAOTestRule? Я думаю, что для каждого потока я должен создать новый ResourceTestRule, верно? я переместил создание экземпляра ResourceTestRule в метод myTest, но получил nullPointerException ....

Пример:

@RunWith(ConcurrentTestRunner.class)
public class ConcurrenceTest {    
String TOKEN = "blabla";
@Rule
public DAOTestRule myDatabase =
    DAOTestRule.newBuilder().addEntityClass(MyEntity.class).build();

private static MyManager myManager = new MyManager(myDatabase);

@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
    .addProvider(RolesAllowedDynamicFeature.class).addProvider(new AuthDynamicFeature(OAUTH_HANDLER))
    .addProvider(new AuthValueFactoryProvider.Binder<>(AccessTokenPrincipal.class))
    .addProvider(new JerseyViolationExceptionMapper()).addProvider(new JsonProcessingExceptionMapper())
    .addResource(new MyResource(MyManager)).build();


@Test
@ThreadCount(100)
public void myTest() {

MyRequest myRequest = new MyRequest(1, "abc");

Response response = resources.target("/things").request().header("Authorization", TOKEN)
        .post(Entity.json(myRequest));
}
}
...