How to stub extended class that has protected methodHow do you assert that a certain exception is thrown in JUnit 4 tests?How to run test methods in specific order in JUnit4?Got ExceptionInInitializerError when mocking constructor of a class with Powermock. How to fix it?Interface with default methods vs Abstract class in Java 8How to Convert a Java 8 Stream to an Array?Test Class with @RunWith(PowerMockRunner.class) annotation runs test cases twice when extending another classHow to install Java 8 on MacWhat's the difference between map and flatMap methods in Java 8?Mocking a private methodPowerMock + Robolectric + Dagger2

What is the smallest number n> 5 so that 5 ^ n ends with "3125"?

What is this high flying aircraft over Pennsylvania?

Air travel with refrigerated insulin

El Dorado Word Puzzle II: Videogame Edition

Is there a reason to prefer HFS+ over APFS for disk images in High Sierra and/or Mojave?

Ways of geometrical multiplication

Alignment of six matrices

Sound waves in different octaves

Telemetry for feature health

I'm just a whisper. Who am I?

How do I prevent inappropriate ads from appearing in my game?

How to preserve electronics (computers, iPads and phones) for hundreds of years

Did I make a mistake by ccing email to boss to others?

How much do grades matter for a future academia position?

Why does the Persian emissary display a string of crowned skulls?

Origin of pigs as a species

Language involving irrational number is not a CFL

Why is participating in the European Parliamentary elections used as a threat?

Echo with obfuscation

Unable to disable Microsoft Store in domain environment

Can I cause damage to electrical appliances by unplugging them when they are turned on?

Why the "ls" command is showing the permissions of files in a FAT32 partition?

What in this world is she trying to say?

How do I tell my boss that I'm quitting in 15 days (a colleague left this week)



How to stub extended class that has protected method


How do you assert that a certain exception is thrown in JUnit 4 tests?How to run test methods in specific order in JUnit4?Got ExceptionInInitializerError when mocking constructor of a class with Powermock. How to fix it?Interface with default methods vs Abstract class in Java 8How to Convert a Java 8 Stream to an Array?Test Class with @RunWith(PowerMockRunner.class) annotation runs test cases twice when extending another classHow to install Java 8 on MacWhat's the difference between map and flatMap methods in Java 8?Mocking a private methodPowerMock + Robolectric + Dagger2













0















I have a legacy code that not great.
I would like to write a test for it without changing anything in the code.
So I tried to use Powermock, but the mock of extended class keep going to a real class.



How can I test this? Is it even possible without changing the code dramatically?



public class A extends B 

public static MyObject process(final List<String> myList)
List<Integer> myIntList = getSomething(123);
MyObject obj = new MyObject();

return obj.get(myIntList);



public class B
protected static MySource MY_SOURCE = new MySource();

protected static List<Integer> getSomething(String id)
List<Integer> intList = new ArrayList<>();
intList.add(123);
return intList




@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
public class ATest

@InjectMocks
private A aClass;

@Before
public void setUp()
initMocks(this);

PowerMockito.when(B.class, "getSomething", "123").thenReturn(Collections.EMPTY_LIST());


@Test
public void testProcess()
List<String> inputList = new ArrayList<>();
inputList.add("mylist1");
MyObject result = aClass.process(inputList);

assertNotNull(result);











share|improve this question






















  • Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

    – Morfic
    Mar 8 at 15:32
















0















I have a legacy code that not great.
I would like to write a test for it without changing anything in the code.
So I tried to use Powermock, but the mock of extended class keep going to a real class.



How can I test this? Is it even possible without changing the code dramatically?



public class A extends B 

public static MyObject process(final List<String> myList)
List<Integer> myIntList = getSomething(123);
MyObject obj = new MyObject();

return obj.get(myIntList);



public class B
protected static MySource MY_SOURCE = new MySource();

protected static List<Integer> getSomething(String id)
List<Integer> intList = new ArrayList<>();
intList.add(123);
return intList




@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
public class ATest

@InjectMocks
private A aClass;

@Before
public void setUp()
initMocks(this);

PowerMockito.when(B.class, "getSomething", "123").thenReturn(Collections.EMPTY_LIST());


@Test
public void testProcess()
List<String> inputList = new ArrayList<>();
inputList.add("mylist1");
MyObject result = aClass.process(inputList);

assertNotNull(result);











share|improve this question






















  • Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

    – Morfic
    Mar 8 at 15:32














0












0








0








I have a legacy code that not great.
I would like to write a test for it without changing anything in the code.
So I tried to use Powermock, but the mock of extended class keep going to a real class.



How can I test this? Is it even possible without changing the code dramatically?



public class A extends B 

public static MyObject process(final List<String> myList)
List<Integer> myIntList = getSomething(123);
MyObject obj = new MyObject();

return obj.get(myIntList);



public class B
protected static MySource MY_SOURCE = new MySource();

protected static List<Integer> getSomething(String id)
List<Integer> intList = new ArrayList<>();
intList.add(123);
return intList




@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
public class ATest

@InjectMocks
private A aClass;

@Before
public void setUp()
initMocks(this);

PowerMockito.when(B.class, "getSomething", "123").thenReturn(Collections.EMPTY_LIST());


@Test
public void testProcess()
List<String> inputList = new ArrayList<>();
inputList.add("mylist1");
MyObject result = aClass.process(inputList);

assertNotNull(result);











share|improve this question














I have a legacy code that not great.
I would like to write a test for it without changing anything in the code.
So I tried to use Powermock, but the mock of extended class keep going to a real class.



How can I test this? Is it even possible without changing the code dramatically?



public class A extends B 

public static MyObject process(final List<String> myList)
List<Integer> myIntList = getSomething(123);
MyObject obj = new MyObject();

return obj.get(myIntList);



public class B
protected static MySource MY_SOURCE = new MySource();

protected static List<Integer> getSomething(String id)
List<Integer> intList = new ArrayList<>();
intList.add(123);
return intList




@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
public class ATest

@InjectMocks
private A aClass;

@Before
public void setUp()
initMocks(this);

PowerMockito.when(B.class, "getSomething", "123").thenReturn(Collections.EMPTY_LIST());


@Test
public void testProcess()
List<String> inputList = new ArrayList<>();
inputList.add("mylist1");
MyObject result = aClass.process(inputList);

assertNotNull(result);








junit java-8 powermock powermockito






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 7 at 2:51









user293655user293655

51110




51110












  • Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

    – Morfic
    Mar 8 at 15:32


















  • Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

    – Morfic
    Mar 8 at 15:32

















Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

– Morfic
Mar 8 at 15:32






Your sample does not compile and is incomplete (what is MyObject and what does obj.get(myIntList) do?!) but from the looks of it you need to remove the aClass field, the initMocks(this) call and add a PowerMockito.mockStatic(B.class); before the PowerMockito.when(B.class.... call. If you can provide a correct sample I can double-check, but without it I can only guess/assume...

– Morfic
Mar 8 at 15:32













0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55035304%2fhow-to-stub-extended-class-that-has-protected-method%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55035304%2fhow-to-stub-extended-class-that-has-protected-method%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

Алба-Юлія

Захаров Федір Захарович