3

小さなテストを実行しましたが、2番目のテストでアサーションエラー(1ではなく0)が発生します。

package tests;

import static org.junit.Assert.*;
import org.junit.Test;
import javax.swing.*;

public class MenuTest {

    @Test
    public void testElementsAddition() {
        JMenuItem mItem1 = new JMenuItem();
        JMenuItem mItem2 = new JMenuItem();
        JMenu menu = new JMenu();

        mItem1.add(mItem2);
        assertEquals(1, mItem1.getComponentCount());

        menu.add(mItem1);
        assertEquals(1, menu.getComponentCount());
    }
}

なぜこれが起こるのか、何か考えはありますか?

4

1 に答える 1

5

これは、メニュー項目が実際にはJMenuそれ自体に追加されていないが、内部でポップアップメニューに追加されており、実際にはメニューに何も追加されていないために発生します。

JMenu#getItemCount「セパレータを含むメニューの項目数を返す」、またはできればJMenu#getMenuComponentCountを使用することをお勧めします。

于 2012-11-22T04:48:24.797 に答える