我有以下方法,没有在我的 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 类中也有以下测试方法。我想知道是否有人可以告诉我应该如何测试我的方法,因为我不知道如何从测试类访问它。谢谢!
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);
}
最佳答案
理想情况下,您的单元测试类应与您的类驻留在同一类路径包中。
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/main/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
为前缀。
关于java - 使用 junit 测试 Java 中的无修饰符方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282042/