Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用junit测试向arraylist添加元素_Java_Unit Testing_Arraylist_Junit_Mocking - Fatal编程技术网

Java 如何使用junit测试向arraylist添加元素

Java 如何使用junit测试向arraylist添加元素,java,unit-testing,arraylist,junit,mocking,Java,Unit Testing,Arraylist,Junit,Mocking,我想测试addElement方法: public class MyClass { private List<Integer> ints = new ArrayList<>(); public void addElement(int element) { ints.add(element); } } 公共类MyClass{ private List ints=new ArrayList(); 公共无效加法器(整数元素){ 添加(元


我想测试addElement方法:

public class MyClass {
    private List<Integer> ints = new ArrayList<>();

    public void addElement(int element) {
        ints.add(element);
    }
}
公共类MyClass{
private List ints=new ArrayList();
公共无效加法器(整数元素){
添加(元素);
}
}
我需要测试是否添加了我的元素。根据类隔离,我不能使用任何ArrayList方法来检查它。事实上,我应该嘲笑我的arrayList。但如果我模拟它并改变get()方法的行为以返回一些值,我就不能确定我的元素是否在那个列表中


如何测试它?

我建议创建一个
MyClass
的子类,它具有某种类型的
public
方法来检索
ArrayList
(或列表中的特定元素)。如果要从子类访问
ints
对象,还需要将其访问级别更改为
protected
。如果您想让它更紧凑一些,可以使用默认范围,并要求新类与
MyClass
位于同一个包中。我以前已经这样做了,并且认为能够对您的代码进行单元测试是一个合理的花费。 这样将测试父类,但您可以使用子类从测试中检索信息

例如:

public class MyClass {
    protected List<Integer> ints = new ArrayList<>();
    ...
}

public class MyClassChild extends MyClass {
    public List<Integer> getInts() {
        return ints;
    }
}

// Test code
MyClassChild myClass = new MyClassChild();
myClass.addElement(42);
myclass.getInts().size() == 1;
公共类MyClass{
受保护列表int=new ArrayList();
...
}
公共类MyClassChild扩展MyClass{
公共列表getInts(){
返回整数;
}
}
//测试代码
MyClassChild myClass=新建MyClassChild();
myClass.addElement(42);
myclass.getInts().size()==1;

如果所有这些都失败了,您可以依靠反射来检索对象,但这更麻烦(在我看来)。

我建议创建
MyClass
的子类,该子类具有某种类型的
public
方法来检索
ArrayList
(或列表中的特定元素)。如果要从子类访问
ints
对象,还需要将其访问级别更改为
protected
。如果您想让它更紧凑一些,可以使用默认范围,并要求新类与
MyClass
位于同一个包中。我以前已经这样做了,并且认为能够对您的代码进行单元测试是一个合理的花费。 这样将测试父类,但您可以使用子类从测试中检索信息

例如:

public class MyClass {
    protected List<Integer> ints = new ArrayList<>();
    ...
}

public class MyClassChild extends MyClass {
    public List<Integer> getInts() {
        return ints;
    }
}

// Test code
MyClassChild myClass = new MyClassChild();
myClass.addElement(42);
myclass.getInts().size() == 1;
公共类MyClass{
受保护列表int=new ArrayList();
...
}
公共类MyClassChild扩展MyClass{
公共列表getInts(){
返回整数;
}
}
//测试代码
MyClassChild myClass=新建MyClassChild();
myClass.addElement(42);
myclass.getInts().size()==1;

如果所有这些都失败了,您可以依靠反射来检索对象,但这更麻烦(在我看来)。

我建议创建
MyClass
的子类,该子类具有某种类型的
public
方法来检索
ArrayList
(或列表中的特定元素)。如果要从子类访问
ints
对象,还需要将其访问级别更改为
protected
。如果您想让它更紧凑一些,可以使用默认范围,并要求新类与
MyClass
位于同一个包中。我以前已经这样做了,并且认为能够对您的代码进行单元测试是一个合理的花费。 这样将测试父类,但您可以使用子类从测试中检索信息

例如:

public class MyClass {
    protected List<Integer> ints = new ArrayList<>();
    ...
}

public class MyClassChild extends MyClass {
    public List<Integer> getInts() {
        return ints;
    }
}

// Test code
MyClassChild myClass = new MyClassChild();
myClass.addElement(42);
myclass.getInts().size() == 1;
公共类MyClass{
受保护列表int=new ArrayList();
...
}
公共类MyClassChild扩展MyClass{
公共列表getInts(){
返回整数;
}
}
//测试代码
MyClassChild myClass=新建MyClassChild();
myClass.addElement(42);
myclass.getInts().size()==1;

如果所有这些都失败了,您可以依靠反射来检索对象,但这更麻烦(在我看来)。

我建议创建
MyClass
的子类,该子类具有某种类型的
public
方法来检索
ArrayList
(或列表中的特定元素)。如果要从子类访问
ints
对象,还需要将其访问级别更改为
protected
。如果您想让它更紧凑一些,可以使用默认范围,并要求新类与
MyClass
位于同一个包中。我以前已经这样做了,并且认为能够对您的代码进行单元测试是一个合理的花费。 这样将测试父类,但您可以使用子类从测试中检索信息

例如:

public class MyClass {
    protected List<Integer> ints = new ArrayList<>();
    ...
}

public class MyClassChild extends MyClass {
    public List<Integer> getInts() {
        return ints;
    }
}

// Test code
MyClassChild myClass = new MyClassChild();
myClass.addElement(42);
myclass.getInts().size() == 1;
公共类MyClass{
受保护列表int=new ArrayList();
...
}
公共类MyClassChild扩展MyClass{
公共列表getInts(){
返回整数;
}
}
//测试代码
MyClassChild myClass=新建MyClassChild();
myClass.addElement(42);
myclass.getInts().size()==1;
如果所有其他方法都失败,您可以依靠反射来检索对象,但这更麻烦(在我看来)。

assertEquals(intsPreviousSize+1,ints.size())
,并为ints ArrayList提供一个getter方法。如果你不能使用getter,那么你可以使用反射,如果你不能这样做,那么我认为你不能。

assertEquals(intsPreviousSize+1,ints.size())
,并为ints ArrayList使用getter方法。如果你不能使用getter,那么你可以使用反射,如果你不能这样做,那么我认为你不能。

assertEquals(intsPreviousSize+1,ints.size())
,并为ints ArrayList使用getter方法。如果你不能使用getter,那么你可以使用反射,如果你不能这样做,那么我认为你不能。

assertEquals(intsPreviousSize+1,ints.size())
,并为ints Ar使用getter方法