3

GroovyコードのJunit4テストケースを作成しようとしています。Junit 4テストケースは、SpringSourceToolSuiteであるEclipseIDE内で正常に機能します。ただし、すべてのテストケースを実行するためのテストを実行することはできません。

これがテストランナーでの私の現在の試みです。これは、GroovyのWebサイト自体から直接取得されたものです。

import groovy.util.GroovyTestSuite;
import org.codehaus.groovy.runtime.ScriptTestAdapter
import junit.framework.*;

class allTests {

static Test suite() {
  def gsuite = new GroovyTestSuite()
  gsuite.addTest(new ScriptTestAdapter(gsuite.compile("test/GSieveTest.groovy"), [] as String[]))
  return gsuite
}

}

junit.textui.TestRunner.run(allTests.suite())

結果:

org.codehaus.groovy.runtime.InvokerInvocationException:
    org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack:
    No signature of method: GSieveTest.main() is applicable for argument types: () values: []

どうしたの?ああ、これがGSieveTest.groovyです。「RunAsJunittest...」を使用して正常に実行されます。

import static org.junit.Assert.assertEquals;
import org.junit.Test;

class GSieveTest {
@Test
public void Primes1To10() {
    def sieve = (0..10).toList()
    GSieve.filter(sieve); // [1,2,3,5,7]
    assertEquals("Count of primes in 1..10 not correct", 5, (sieve.findAll {it -> it != 0}).size());        
}
@Test
public void FiftyNineIsPrime() {
    def sieve = (0..60).toList()
    GSieve.filter(sieve);
    assertEquals("59 must be a prime", 59, sieve[59]);
}
@Test
public void Primes1To100() {
    def sieve = (0..100).toList()
    GSieve.filter(sieve);
    def list = sieve.findAll {it -> it != 0}
    def primes = [1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
    println list
    println primes
    assertEquals(true, list == primes)
}

} 
4

2 に答える 2

3

私もこれと長い間戦い、Groovy の文書化されたサンプルを JUnit 4 で動作させることができませんでした。

RunAllTestScripts.groovy というスクリプトを作成します。

package com.mypackage

import org.junit.runner.JUnitCore

result = JUnitCore.runClasses MyGroovyTestClass, MyOtherGroovyTestClass, AnotherGroovyTestClass

String message = "Ran: " + result.getRunCount() + ", Ignored: " + result.getIgnoreCount() + ", Failed: " + result.getFailureCount()
if (result.wasSuccessful()) {
    println "SUCCESS! " + message
} else {
    println "FAILURE! " + message
    result.getFailures().each {
        println it.toString() 
    }
}

それでおしまい。JUnitCore (JUnit4) ランナーは、これらのテスト クラスを実行します。おそらく、TestSuite を使用したより洗練されたソリューションが存在する可能性がありますが、これで十分です。Result オブジェクトには、実行、無視、失敗のカウントと、簡単に調べられる詳細な失敗リストが含まれています。

于 2010-11-07T00:48:15.367 に答える
0

今私はそれを手に入れました-GroovyにはJUnit4テスト用のテストランナーがありません。JUnit4サポートの範囲は次のとおりです。http: //groovy.codehaus.org/Using+JUnit+4+with+Groovy

スクリプトテストアダプター(ScriptTestAdapter)で実行できるのは、JUnitテストではないGroovyスクリプトを実行することです。次に例を示します。

-----ScriptTest1.groovy--------
import static org.junit.Assert.assertEquals;
def sieve = (0..10).toList()
GSieve.filter(sieve); // [1,2,3,5,7]
assertEquals("Count of primes in 1..10 not correct", 5, (sieve.findAll {it -> it != 0}).size());
-----end of ScriptTest1--------
于 2010-09-17T01:05:00.833 に答える