2017-10-24 22 views
1
package com.test; 

public class Calculation { 
    public static int add(int n1, int n2) 
    { 
      return n1 + n2; 
    } 

    public static int sub(int n1, int n2) 
    { 
      return n1 * n2; 
    } 
} 

は、上記の私のJUnitテストクラス私のクラスと以下 されているJUnitの誤差は

package com.test; 

import static org.junit.Assert.*; 

import org.junit.Test; 

public class CalculationTest extends Calculation 
{ 
    CalculationTest test = new CalculationTest(); 
    @Test 

    public void testadd() 
    { 
      assertEquals(9,Calculation.add(1,8)); 
    } 
    public void testsub() 
    { 
      assertEquals(12,Calculation.sub(15,3)); 
    } 
} 

こんにちはすべてのヘルプは、それが間違っているので、私は現在、私のサブテストでエラーを取得しようとしているいただければ幸いです私のクラスでは、しかし、私が現在取得しているエラーは私のjunitのLine 9にあります。なぜそれがエラーを引き起こすのか理解できないのです。

CalculationTest test = new CalculationTest();

答えて

1

ライン9、CalculationTest test = new CalculationTest();、新しいCalculationTestインスタンスの作成時に呼び出されるデフォルトのコンストラクタを引き起こします。このコードでは、CalculationTestインスタンスにCalculationTestインスタンスが含まれていると宣言しています。これは無限に繰り返される可能性が高く、実際にはコンピュータ上で実行され、その結果JVMはStackOverflowErrorを投げます。

CalculationTesttestメンバーは使用されておらず、必要ではないようです - この問題の他の回答やコメントで提起された他の問題に対処することを検討してください。

+1

はい、あなたは正しいと私にそれを説明していただきありがとう –

+0

あなたを大歓迎!答えがあなたに役立ったことを確認していただきありがとうございます。この回答があなたの質問に答えると有用である場合は、サイト規約に従って、私が提供した答えをアップアップして受け入れることができますか?ありがとう! –

+0

お受け取りいただきありがとうございます! –

2

あなたのサブメソッドは、エラーが発生しました:

public static int sub(int n1, int n2) { 
     return n1 - n2; 
} 

第二に、私は、静的メソッドを処分するためにあなたを助言します。静的でないメソッドは、テスト、上書きの方が優れています。ですから、静的でないものにするチャンスがあれば、それらを変更することをお勧めします。

だからあなたのテストは、THOSのように見えるsould:

public class CalculationTest { 

@Test 
public void testAdd() 
{ 
     assertEquals(9,Calculation.add(1,8)); 
} 
@Test 
public void testSub() 
{ 
     assertEquals(12,Calculation.sub(15,3)); 
} 
} 
+1

私はそれがエラーであるかどうかを確認するためにコードに入れてチェックしました。それは私がその部分を間違っているようにしたいというエラーです。 しかし、私はj単位でそれを実行し、赤いバーを取得、私はエラーをチェックし、それはテストの行9です。 –

+1

2番目の方法で@Testが見つかりません。 – Beri

+0

はい、ありがとうございました&はい、それはそれのように見える場合、それはうまく動作します –