I also faced the same issue once. In my case I was running my tests using Enclosed Runner of Junit. I created a class called SharedSetup to enable common features for my 2 test classes. But somehow facing the same issue.
@RunWith(Enclosed.class)
public class StructApprovalNodeTest {
abstract static class SharedSetup {
    StructApprovalNode sut;
    ExecutionContext ctx = mock(ExecutionContext.class);
    DTDDAOService dtd = mock(DTDDAOService.class);
    @Rule
    public ExpectedException expectedException = ExpectedException.none();
    @Before
    public void before() throws Exception {
        PowerMockito.mockStatic(ServiceHelper.class);
        when(ServiceHelper.getService("dtd")).thenReturn(dtd);
        when(ctx.getContextInstance()).thenReturn(mock(ContextInstance.class));
        when(dtd.getLatestStructures(Matchers.anyInt(), Matchers.anyString(), Matchers.anyString())).thenReturn(
                new ArrayList<Trade>());
        sut = new StructApprovalNode();
        spy(sut);
    }
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({ ServiceHelper.class, StructApprovalNode.class })
@PowerMockIgnore("javax.management.*")
@PowerMockRunnerDelegate(Parameterized.class)
public static class ParamaterizedBatchTest extends SharedSetup {
    private String batchName;
    private String approvalStatus;
    public ParamaterizedBatchTest(String batchName, String approvalStatus) {
        this.batchName = batchName;
        this.approvalStatus = approvalStatus;
    }
    @Parameterized.Parameters
    public static Collection testValues() {
        return Arrays.asList(new Object[][] {
                { "SDC_HK_AUTOMATION_BATCH", Constants.APRVLSTATUS_APPROVED },
                { "SDC_PB_AUTOMATION_BATCH", Constants.APRVLSTATUS_APPROVED },
                { "SDC_FX_AUTOMATION_BATCH", Constants.APRVLSTATUS_APPROVED }
        });
    }
    @Test
    public void test1_SDCBatchSourceSystems() throws Exception {
        Trade trade = new Trade();
        String tradeXml = FileHelper.getResourceFromJar("/testdata/SDC_BATCH_TRADE_XML.xml");
        trade.setTradeXml(tradeXml);
        trade.setTradeDoc(XmlHelper.createDocument(trade.getTradeXml()));
        trade.setStatus(Constants.STATUS_LIVE);
        trade.setSourceSystem(this.batchName);
        when(ctx.getContextInstance().getVariable("trade")).thenReturn(trade);
        when(ctx.getContextInstance().getTransientVariable("prevTrade")).thenReturn(null);
        sut.execute(ctx);
        PowerMockito.verifyPrivate(sut, times(1)).invoke("resetApprovalDetails", trade);
        Assert.assertEquals(this.approvalStatus, trade.getApprovalStatus());
    }
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({ ServiceHelper.class, StructApprovalNode.class })
@PowerMockIgnore("javax.management.*")
public static class NonParamaterizedBatchTest extends SharedSetup {
    @Test
    public void test2_PrevInvalidTrade() throws Exception {
        expectedException.expect(Exception.class);
        expectedException.expectMessage("External Id of STRUCTURE_TRADE cannot be changed.");
        Trade trade = new Trade();
        trade.setExternalId(123);
        PrevTrade prevTrade = new PrevTrade();
        prevTrade.setExternalId(1234);
        when(ctx.getContextInstance().getVariable("trade")).thenReturn(trade);
        when(ctx.getContextInstance().getTransientVariable("prevTrade")).thenReturn(prevTrade);
        sut.execute(ctx);
    }
    @Test
    public void test3_ValidPrevTrade() throws Exception {
        Trade trade = new Trade();
        String tradeXml = FileHelper.getResourceFromJar("/testdata/SDC_BATCH_TRADE_XML.xml");
        trade.setTradeXml(tradeXml);
        trade.setTradeDoc(XmlHelper.createDocument(trade.getTradeXml()));
        trade.setStatus(Constants.STATUS_LIVE);
        trade.setSourceSystem("BATCH");
        trade.setExternalId(1277402441);
        PrevTrade prevTrade = new PrevTrade();
        prevTrade.setExternalId(1277402441);
        when(ctx.getContextInstance().getVariable("trade")).thenReturn(trade);
        when(ctx.getContextInstance().getTransientVariable("prevTrade")).thenReturn(prevTrade);
        sut.execute(ctx);
        PowerMockito.verifyPrivate(sut, times(1)).invoke("resetApprovalDetails", trade);
        Assert.assertEquals("APPROVED", trade.getApprovalStatus());
    }
    @Test
    public void test4_ValidPrevTradeAutoApprpve() throws Exception {
        Trade trade = new Trade();
        String tradeXml = FileHelper.getResourceFromJar("/testdata/SDC_BATCH_TRADE_XML_AUTO_APPRV.xml");
        trade.setTradeXml(tradeXml);
        trade.setTradeDoc(XmlHelper.createDocument(trade.getTradeXml()));
        trade.setStatus(Constants.STATUS_LIVE);
        trade.setSourceSystem("BATCH");
        trade.setExternalId(1277402441);
        PrevTrade prevTrade = new PrevTrade();
        prevTrade.setExternalId(1277402441);
        prevTrade.setApprovalStatus(Constants.APRVLSTATUS_NOTAPPROVED);
        when(ctx.getContextInstance().getVariable("trade")).thenReturn(trade);
        when(ctx.getContextInstance().getTransientVariable("prevTrade")).thenReturn(prevTrade);
        sut.execute(ctx);
        PowerMockito.verifyPrivate(sut, times(1)).invoke("resetApprovalDetails", trade);
        Assert.assertEquals(prevTrade.getApprovalStatus(), trade.getApprovalStatus());
    }
    @Test
    public void test5_tradeStatusDraft() throws Exception {
        Trade trade = new Trade();
        String tradeXml = FileHelper.getResourceFromJar("/testdata/SDC_BATCH_TRADE_XML.xml");
        trade.setTradeXml(tradeXml);
        trade.setTradeDoc(XmlHelper.createDocument(trade.getTradeXml()));
        trade.setStatus(Constants.STATUS_DRAFT);
        trade.setSourceSystem("BATCH");
        trade.setExternalId(1277402441);
        when(ctx.getContextInstance().getVariable("trade")).thenReturn(trade);
        when(ctx.getContextInstance().getTransientVariable("prevTrade")).thenReturn(null);
        sut.execute(ctx);
        PowerMockito.verifyPrivate(sut, times(1)).invoke("resetApprovalDetails", trade);
        Assert.assertEquals(Constants.APRVLSTATUS_NONE, trade.getApprovalStatus());
    }
}
}
To solve the issue, I just removed the public modifier from the abstract super class SharedSetup and issue is fixed for good