2017-02-02 28 views
-2

私はスーパークラスといくつかのサブクラスを持っています。何らかの理由で、JUnitテストを実行すると、すべてのメソッドが失敗して、サブクラスを作成しようとすると、このエラーメッセージが表示されます。コンストラクタで失敗するすべてのテストメソッド[宿題]

ソースが見つかりません:このクラスファイルのJARは、JUnit 4に属しています.JUnit 4では、エントリの添付ファイルを変更できません。

は、ここに私のスーパークラス

public class Sequence { 

protected char[] seqarr; 

public boolean isValidLetter(char let){ 
    boolean isValid = false; 
    if (Character.isUpperCase(let) == true || Character.isLowerCase(let) == true){ 
     isValid = true; 
    } 
    return isValid; 
} 


public Sequence(char[] sarr){ 

    boolean check = true; 
    for (int i = 0; i<sarr.length; i++){ 
     if (isValidLetter(sarr[i]) == false){ 
     check = false; 
     break; 
     } 
    } 
    if (check == true){ 
     seqarr = sarr; 
    } 

    if (check == false){ 
     throw new IllegalArgumentException("Invalid sequence letter for class edu.iastate.cs228.hw1.Sequence"); //Need to figure out how to make this say whatever class it came from 

    } 



} 

public int seqLength(){ 
    return seqarr.length; 

} 

public char[] getSeq(){ 
    char[] seqCopy = seqarr; 
    return seqCopy; 

} 

public String toString(){ 
    String stringSeq = ""; 
    for(int i = 0; i < seqarr.length; i++){ 
     stringSeq = stringSeq + seqarr[i]; 
    } 
    return stringSeq; 

} 

public boolean equals(Object obj){ 
    boolean check = false; 
    if (obj != null && (seqarr.toString().toLowerCase() == obj.toString().toLowerCase())){ 
     check = true; 
    } 
    return check; 

} 





} 

は、ここに私のサブクラスの1

public class DNASequence extends Sequence { 


@Override 
public boolean isValidLetter(char let){ 
    return "aAcCgGtT".indexOf(let) != -1; 
} 


public DNASequence(char[] dnaarr){ 
    super(dnaarr); 
} 
} 

だだし、ここでそのサブクラスのテストケースは パブリッククラスDNASequenceTest {

char[] testArrOne = {'a','B','c','D'}; 

@Test 
public void testValidLetter() { 
    String msg = "Method should return true if the character is a/A, c/C, g/G, or t/T"; 
    DNASequence newDNASequence = new DNASequence(testArrOne); 
    assertEquals(msg, true, newDNASequence.isValidLetter('a')); 

    } 


@Test 
public void testValidLetterTwo(){ 
    DNASequence newDNASequence = new DNASequence(testArrOne); 
    assertEquals(false, newDNASequence.isValidLetter('P')); 
} 



@Test 
public void testConstructor(){ 
    String msg = "The constructor should call the super and initialize seqarr to the input if all compnents are valid."; 
    DNASequence newDNASequence = new DNASequence(testArrOne); 
    Sequence newSequence = new Sequence(testArrOne); 
    assertArrayEquals(msg, testArrOne, newDNASequence.getSeq()); 
    assertArrayEquals(msg, testArrOne, newSequence.getSeq()); 
} 
} 

編集です:私の障害リスト DNASequenceTest hw1.DNASequenceTest testValidLetterTwo(hw1.DNASequenceTest) java.lang.IllegalArgumentExceptionが:クラスedu.iastate.cs228.hw1.Sequence

at hw1.Sequence.<init>(Sequence.java:35) 

at hw1.DNASequence.<init>(DNASequence.java:13) 

at hw1.DNASequenceTest.testValidLetterTwo(DNASequenceTest.java:22) 

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 

at java.lang.reflect.Method.invoke(Method.java:498) 

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 

at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

testValidLetter(hw1.DNASequenceTest) のJavaの無効なシーケンスの手紙。 lang.IllegalArgumentException:無効なシーケンス文字クラスのedu.iastate.cs228.hw1.Sequence

at hw1.Sequence.<init>(Sequence.java:35) 

at hw1.DNASequence.<init>(DNASequence.java:13) 

at hw1.DNASequenceTest.testValidLetter(DNASequenceTest.java:14) 

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 

at java.lang.reflect.Method.invoke(Method.java:498) 

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 

at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

testConstructor(hw1.DNASequenceTest) java.lang.IllegalArgum entException:クラスedu.iastate.cs228.hw1.Sequence

at hw1.Sequence.<init>(Sequence.java:35) 

at hw1.DNASequence.<init>(DNASequence.java:13) 

at hw1.DNASequenceTest.testConstructor(DNASequenceTest.java:31) 

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 

at java.lang.reflect.Method.invoke(Method.java:498) 

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 

at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
+0

失敗の誤差は何ですか? –

+0

**正確なエラー** –

+0

*をデバッグしようとしました。このエラーメッセージが表示されます。 ソースが見つかりません:このクラスファイルのJARは、ソースを変更できないJUnit 4に属していますそのエントリの添付ファイル* - これは赤いニシンです。 –

答えて

0

問題があります文字が有効であれば各要素をチェックするDNASequenceのコンストラクタの引数として常にtestArrOneを使用します。しかしBDではありません。は有効でないため、テストは常にIllegalArgumentExceptionで失敗します。

あなたが唯一の引数として使用するように有効な入力が含まれているテストアレイ作ることができます:

char[] testArrValid = { 'a', 'G', 'c', 'T' }; 

を...

@Test 
public void testValidLetter() { 
    String msg = "Method should return true if the character is a/A, c/C, g/G, or t/T"; 
    DNASequence newDNASequence = new DNASequence(testArrValid); // <-- use here 
    assertEquals(msg, true, newDNASequence.isValidLetter('a')); 
} 
+0

と言ってポップアップボックスを取得しているとランナークラスを明確にせずにどのように動作するのですか? –

+0

彼のエラーをどうやって知っていますか? –

+1

@KamyarParastesh Eclipseはそれを世話してくれます。私はちょうど "junit testとして実行"することができます。私はコードを実行したので、私はエラーを知っています。 –

-1

の無効なシーケンス手紙考えられる理由は、あなたがあなたのJUnitテストを実行するために適切なクラスを追加していないされて

@RunWith(springjunit4classrunner.class) 
class DNASequenceTest { 
+0

返信いただきありがとうございます!それはrunwithは型に解決することはできませんと私は "廃止メソッド上のスタック" –

関連する問題