我正在尝试模拟一个字符串列表,但它不起作用。我无法弄清楚问题所在

I'm trying to mock a list of strings but it's not working. I'm not able to figure out the problem

这是 class 和我为它编写的相应测试。有人可以帮我理解为什么 System.out.println(a.size()) 打印 0 ,什么时候应该打印 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();

    }
}

我不确定你为什么要这样做,但要实现这一点,你必须将“列表 a”移动到 class 级别,以便“模拟”和 return 任何你想要的。 我有下面的例子,希望这有帮助:

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);
    }
}

输出: