1

我有以下方法,没有在我的 Column 类中完全声明修饰符。

float maximumActiveDutyCycle(ArrayList<Column> columns)
{
    // TODO: change public back to default
    float maximumActiveDutyCycle = 0.0f;
    for (Column column : columns)
    {
        if (column.activeDutyCycle > maximumActiveDutyCycle)
        {
            maximumActiveDutyCycle = column.activeDutyCycle;
        }
    }
    return maximumActiveDutyCycle;
}

但是我在TestColumn类中也有以下测试方法。我想知道是否有人可以告诉我应该如何测试我的方法,因为我不知道如何从 Test 类访问它。谢谢!

public void testMaximumActiveDutyCycle()
{
    this.column00.setActiveDutyCylce(1.1f);
    this.column01.setActiveDutyCylce(1.3f);
    this.column33.setActiveDutyCylce(1.35f);
    this.column57.setActiveDutyCylce(1.355f);
    Set<Column> columns = new HashSet<Column>();
    columns.add(column00);
    columns.add(column01);
    columns.add(column33);
    columns.add(column57);



}
4

2 回答 2

2

理想情况下,您的单元测试类应该与您的类位于相同的类路径包中。

src/main/java/com/yourcompany/project <- your project's classes
src/test/java/com/yourcompany/project <- your unit tests

因此,在您的单元测试类中,您可以访问具有包访问可见性的方法:

Column column = new Column()
column.maximumActiveDutyCycle(columns);

代码示例:

src//java/sg/java/test

package sg.java.test;

public class Myclass {
    float maximumActiveDutyCycle() {
        return 0f;
    }
}

src/测试/java/sg/java/test

package sg.java.test;

import static org.junit.Assert.assertTrue;

import org.junit.Test;

public class MyclassTest {
    @Test
    public void testMaximumActiveDutyCycle() {
        Myclass clazz = new Myclass();

        assertTrue(clazz.maximumActiveDutyCycle() == 0f);
    }
}

编辑:更改了单元测试的类名,应该用Test而不是前缀来固定。虽然方法名称应按test约定以前缀为前缀。

在此处输入图像描述

于 2012-11-08T03:43:45.293 回答
0

您的方法具有默认(包)范围。您的测试类必须与您的Column类在同一个包中,才能使其可见。

请注意,即使您的Column类在src/文件夹中并且您的测试在test/文件夹中,只要包名称在各自的源文件夹中相同,您的类也将可见。

于 2012-11-08T03:41:09.530 回答