This is the class and the corresponding test I have written for it. Can someone please help me understand why System.out.println(a.size()) prints 0 , when it should print 1000?
WorkingwithLists.java
import java.util.ArrayList;
import java.util.List;
public class WorkingwithLists
{
    public static void main(String[] args) {
    }
    public void ListFunctions()
    {
        List<String > a=new ArrayList<>();
        System.out.println(a.size());
    }
}
WorkingwithListsTest.java
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.List;
import static org.mockito.Mockito.when;
import static org.testng.Assert.*;
public class WorkingwithListsTest
{
    @Mock
    private List<String> a;
    private WorkingwithLists workingwithLists;
    @BeforeMethod
    public void setup()
    {
        MockitoAnnotations.openMocks(this);
        workingwithLists=new WorkingwithLists();
    }
    @Test
    public void testListFunctions() throws Exception
    {
        when(a.size()).thenReturn(1000);
        workingwithLists.ListFunctions();
    }
}
Advertisement
Answer
I am not sure why you want that, but to achieve that you have to move the “List a” to class level in order to “Mock” and return whatever you want. I have below example working, Hope this helps :
import java.util.ArrayList;
import java.util.List;
public class WorkingwithLists{
    List<String > a=new ArrayList<>();
    
    public static void main(String[] args) {
    }
    public void ListFunctions(){
        System.out.println(a.size());
    }
}
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.List;
@RunWith(MockitoJUnitRunner.class)
public class WorkingwithListsTest{
    @InjectMocks
    WorkingwithLists workingwithLists;
    @Mock
    private List<String> a;
    @Before
    public void setup(){
        Mockito.when(a.size()).thenReturn(1000);
    }
    @Test
    public void testListFunctions() throws Exception{
        workingwithLists.ListFunctions();
        Assert.assertTrue(true);
    }
}
