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

EDIT : 単体テストのクラス名を変更しました。接頭辞ではTestなく、後置修正する必要があります。test慣例により、メソッド名には接頭辞を付ける必要があります。

ここに画像の説明を入力

于 2012-11-08T03:43:45.293 に答える
0

メソッドにはデフォルトの(パッケージ)スコープがあります。テスト クラスColumnが表示されるためには、クラスと同じパッケージに含まれている必要があります。

Columnクラスがsrc/フォルダー内にあり、テストがフォルダー内にある場合でもtest/、パッケージ名がそれぞれのソース フォルダー内で同じである限り、クラスが表示されることに注意してください。

于 2012-11-08T03:41:09.530 に答える