2つのクラスがあります。1つは計算オブジェクト(CyberPet.java)で、もう1つは計算オブジェクト(TestCyberPet.java)をテストします。TestCyberPetには、ユーザー入力を使用してCyberPetのインスタンスをインスタンス化するcreatePet()というメソッドがあります。私はすでにやった
CyberPet pet3 = null;
これはcreatePet()です:
private static CyberPet createPet()
{
/*** Local variables ***/
Scanner scanner = new Scanner( System.in );
final String formatString = "%22s: ";
String name;
String size;
String activity;
/*** Get user input ***/
System.out.println();
System.out.printf( formatString, "Enter your pet's name" );
name = scanner.nextLine().trim();
System.out.println();
System.out.printf( formatString, "Enter your pet's size (big or small)" );
size = scanner.nextLine().trim().toLowerCase();
System.out.println();
System.out.printf( formatString, "Enter your pet's current activity (eating, sleeping, or thinking)" );
activity = scanner.nextLine().trim().toLowerCase();
/*** Validate input, notify user of errors ***/
if ( name.length() == 0 )
{
System.out.println( " Invalid input. Name cannot be blank." );
name = CyberPet.DEFAULT_NAME;
}
// else leave as entered string
if ( size == "big" || size == "small" )
{
System.out.println( " Invalid input. Size must be either big or small." );
size = CyberPet.DEFAULT_SIZE;
}
// else leave as entered string
if ( activity == "eating" || activity == "sleeping" || activity == "thinking" )
{
System.out.println( " Invalid input. Activity must be eating, sleeping, or thinking." );
activity = CyberPet.DEFAULT_ACTIVITY;
}
// else leave as entered string
/*** Create cyberpet ***/
CyberPet pet = new CyberPet( name, size, activity );
return pet;
}
私がこれをやろうとするまで、私はそれを機能させています(私は思います!)
pet3.createPet();
createPetはCyberPetクラスに含まれていないためです。createPetを使用してCyberPetのインスタンスを作成するにはどうすればよいですか?
ここに十分な情報を入れていただければ幸いです...これはStackOverflowでの最初の投稿なので、さらに何かを追加する必要がある場合は、教えてください。:)
さて、あなたはこれらのクラスがどうあるべきかについて少し混乱した理解を持っているようです。
テストオブジェクトを作成している場合は、ユーザー入力は必要ありません。既知の値を使用する必要があります。それはより速く、同じ目的を果たします。次に、private static
メソッドにアクセスする場合は、クラス内からアクセスする必要があります。次の方法でアクセスできます。
TestCyberPet.createPet();
これにより、タイプのインスタンスが返されますCyberPet
。
注意
まず、JUnitのようなテストフレームワークを調べる必要があります。これにより、テストプロセスが自動化され、この種のテストを簡単に作成できるようになります。
次に、OOPに関する知識を修正します。クラスの外部で、クラスのユーザー入力の検証を実行しないでください。クラス自体だけが必要なものを知っている必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加