Skip to content

Commit

Permalink
Support @TestInstance(Lifecycle.PER_CLASS)
Browse files Browse the repository at this point in the history
  • Loading branch information
ausbin committed Oct 9, 2023
1 parent 1155b52 commit 95b5433
Showing 1 changed file with 18 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@

import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.Extension;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.TestInstance.Lifecycle;

import io.zucchini.circuitsimtester.api.BaseMemory;
import io.zucchini.circuitsimtester.api.BasePin;
Expand Down Expand Up @@ -84,18 +85,32 @@ public void beforeAll(ExtensionContext context) throws Exception {
}

fieldInjections = generateFieldInjections(testClass);

// Conservatively assume PER_METHOD if lifecycle is MIA
if (context.getTestInstanceLifecycle().isPresent()
&& context.getTestInstanceLifecycle().get() == Lifecycle.PER_CLASS) {
injectFields(context);
}
}

@Override
public void beforeEach(ExtensionContext extensionContext) throws Exception {
public void beforeEach(ExtensionContext context) throws Exception {
// Reset simulator before each test
if (resetSimulationBetween) {
subcircuit.resetSimulation();
}

// Conservatively assume PER_METHOD if lifecycle is MIA
if (!context.getTestInstanceLifecycle().isPresent()
|| context.getTestInstanceLifecycle().get() == Lifecycle.PER_METHOD) {
injectFields(context);
}
}

private void injectFields(ExtensionContext context) throws IllegalAccessException {
// Do simple dependency injection
for (FieldInjection fieldInjection : fieldInjections) {
fieldInjection.inject(extensionContext.getRequiredTestInstance());
fieldInjection.inject(context.getRequiredTestInstance());
}
}

Expand Down

0 comments on commit 95b5433

Please sign in to comment.