2012-03-26 38 views
1

私はJunitテストをしようとしています。私はCMSシステムでメソッドを要求することによってそれらを開始したいと思います。私はプラグインをテストしているからです。問題は、この例外が発生し、その理由がわからないことです。私はJUnit 4.8.2を使用している可能性がありますが、私がEclipseでテストを実行しているときは問題なく動作していました。だから私は解決策を見つけることができません。ここでエラーがある:なぜAssumptionViolatedExceptionを取得するのですか? Junit 4.8.2

ここ
org.apache.velocity.exception.MethodInvocationException: Invocation of method 
'getTest' in class nl.company.cms.three.viewtool.LoginViewTool threw exception 
java.lang.NoClassDefFoundError: org/junit/internal/AssumptionViolatedException at 
working/2a90929a-3fbf-43e9-9961-4a40279ec907_5c6e0bff-cfeb-44c6-86e2- 
a0ba40e7b66c.field[line 1, column 15] 

は私のクラスとテストクラスのコードは次のとおりです。テストを開始するために呼び出す クラス:

public String getTest(){ 
    Result r = org.junit.runner.JUnitCore.runClasses(MyTestClass.class); 
    if(r.getRunCount() > 0){ 
    String s = "Failcount = " + r.getFailureCount() + " // " + 
    r.getRunCount() + " in " + r.getRunTime() + " ms"; 
    System.out.println(r.getFailures().get(0).getTrace()); 
    System.out.println("Runcount: "+r.getRunCount()); 
    System.out.println("Runtime: "+r.getRunTime()); 
    System.out.println("Ignore count: "+r.getIgnoreCount()); 
    System.out.println("Failure count: "+ r.getFailureCount()); 
    return s; 
} 
else{ 
    return "Something ging kei verkeerd jonge!"; 
} 
} 

Testクラス:

public class MyTestClass { 

@Test 
public void testMultiply() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 40, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply1() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply2() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", "ASDF", tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply3() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply4() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 47, tester.multiply(10, 5)); 
} 

@Test 
public void testMultiply5() { 
    CustomLoginViewTool tester = new CustomLoginViewTool(); 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
} 
} 

答えて

2

仮定JUnitがキャッチしますが、テストで失敗しない例外です。これらは "このテストは意味がある"という質問のためのものです。たとえば、LinuxシステムでWindowsパステストが失敗することはありません。成功することはできません。失敗すると、テストを無効にすることなく修正できないというエラーが発生します。

奇妙なのは、単一のエラーメッセージでVelocityとJUnitです。 VelocityがJUnitを実行するのはなぜですか?

エラーは、クラスパスが正しく設定されていないことを意味します。したがって、メソッドを含むクラスをロードするために使用されるクラスローダーを調べる必要がありますgetTest()

+0

私はCMSシステムを介してテストを開始したいと思います。 CMSシステムのテストをリクエストするには、Velocityコードを使用する必要があります。私はそれを求めているときに私はこのエラーを取得します。メソッドをJUnitを使用しない場所に変更すると、そのメソッドは機能します。しかし、内部でJUnitを使用する場合、このエラーが発生します。 – Gynnad

+1

CMSシステムのクラスパスにJUnitを追加します。 –

+0

それはうまくいくかもしれません! :)私は今それをテストしている..そして私が見ることができる限り、それは動作します!私はより大きいテストを行い、それがうまくいくなら私はあなたにたくさん感謝します! – Gynnad

1

CMSシステムではJUnit 3.8.2が使用され、プラグインにはJUnit 4.8.2が必要でした。これは、JavaがJUnitの最新バージョンを取り、これがAssumptionViolatedExceptionのAPIを持っていないためにエラーが発生しました。

0

そのクラスはhamcrestクラスを実装しているので、クラスパスにhamcrest-core jarがあることを確認してください。

関連する問題