首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit -用参数中的对象实例化测试类

JUnit -用参数中的对象实例化测试类
EN

Stack Overflow用户
提问于 2016-08-31 07:12:51
回答 1查看 2.7K关注 0票数 3

我对JUnit测试非常陌生,我正试图了解如何测试类的实例化。

假设我有下面的ToyBox类,它需要一个ArrayList<Toy>才能被实例化。当然,这个玩具列表是在程序的另一部分上创建的,但我不太清楚应该在哪里创建它,以便对ToyBox进行单元测试。

ToyBox类

代码语言:javascript
复制
public ToyBox(ArrayList<Toy> toyList){
    this.toys= toyList;

    for (Toy toy: toyList) {
        checkToy(toy);
    }
}

private void checkToy(Toy toy){
    if (toy.isRed()){
        this.numRed += 1;
    } else {
        this.numBlue += 1;
    }
}
public int getBlues(){
    return this.numBlue;
}

ToyBoxTest

代码语言:javascript
复制
public class ToyBoxTest {

    @Test
    public void getNumBlues() throws Exception {
        // assert that num blues corresponds
    }

我应该在哪里实例化ToyBox类以执行getNumBlues()方法?

应该是这样吗?

代码语言:javascript
复制
public class ToyBoxTest {
    ArrayList<Toy> toyList = new ArrayList<Toy>();
    Toy toy1 = new Toy("blue", "car");
    Toy toy2 = new Toy("red", "bike");
    toyList.add(toy1);
    toyList.add(toy2);

    @Test
    public void getNumBlues() throws Exception {
        // assert that num blues corresponds
        ToyBox box = new ToyBox(toyList);
        assertEquals(1, box.getBlues());
    }

基本上,我的问题是应该在何处以及如何创建测试依赖于创建的列表的类所需的对象数组列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 07:21:10

大多数教程将指出,最佳实践是实例化您将要在安装方法中测试的对象(JUnit术语中的@Before方法)。然而,您的usecase并不适合这种模式。由于构造函数包含所有逻辑,所以应该在测试本身中实例化对象,然后断言getNumBlues()getNumReds()返回正确的结果。例如:

代码语言:javascript
复制
@Test
public void bothColors() throws Exception {
    ArrayList<Toy> toyList = new ArrayList<>(Arrays.asList
        new Toy("blue", "car"),
        new Toy("red", "bike"));
    ToyBox box = new ToyBox(toyList);
    assertEquals(1, box.getBlues());
}

@Test
public void justBlues() throws Exception {
    ArrayList<Toy> toyList = new ArrayList<>(Arrays.asList
        new Toy("blue", "car"),
        new Toy("blue", "bike"));
    ToyBox box = new ToyBox(toyList);
    assertEquals(2, box.getBlues());
}

// etc...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39243012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档