0

このチュートリアルに従ってJUnitを初めて使用しますが、テストケースに関するいくつかの提案と理解が必要です

フォルダーにいくつかの xml (それぞれ 3MB-6MB) があり、xml ごとに、タグに値が含まれているかどうかをテストし、その値を特定の結果と一致させる必要があります。

では、テストごとに、ループ内ですべての @Test 関数を実行するにはどうすればよいでしょうか? 通常、ループ内で @Test 関数 (自動的に呼び出されるため) を呼び出す必要がありますか?

このコンテキストでJUnitを理解するのを手伝ってください。ありがとう

Junit テストケース

public class SystemsCheck {

    def fileList

    @Before
    public void setUp() throws Exception {

        def dir = new File("E:\\temp\\junit\\fast")
        fileList = []

        def newFile=""
        dir.eachFileRecurse (FileType.FILES) { file ->
            fileList << file
          }

        fileList.each {
            //how should i test all @Test with it.text
            println it.text
          }     
    }

    @Test 
    void testOsname(){
        NixSystems ns=new NixSystems()
        /*checking if tag is not empty*/
        //assertEquals("Result","",ns.verifyOsname())
    }

    @Test
    public void testMultiply(){
        NixSystems ns=new NixSystems()
        assertEquals("Result", 50, ns.multiply(10, 5))
    }

}

class NixSystems {

    public def verifyOsname(xml){
        return processXml( xml, '//client/system/osname' )
    }

    public def multiply(int x, int y) {
        return x * y;
    }


    def processXml( String xml, String xpathQuery ) {
        def xpath = XPathFactory.newInstance().newXPath()
        def builder     = DocumentBuilderFactory.newInstance().newDocumentBuilder()
        def inputStream = new ByteArrayInputStream( xml.bytes )
        def records     = builder.parse(inputStream).documentElement
        xpath.evaluate( xpathQuery, records )
      }
}
4

1 に答える 1

2

JUnit には、この種のテスト専用の機能であるParameterized JUnit Testsがあります。これは基本的に、すでに行ったことを行いますが、簡潔で標準化された方法です。

以下はJava- のコードで、簡単に に変換できますGroovy

@RunWith(Parameterized.class)
public class TestCase {
    private Type placeholder1;
    private Type placeholder2;
    ...
    public TestCase(Param1 placeholder1, Param2 placeholder2, ...) {
        this.placeholder1 = placeholder1;
    }

    @Parameters
    public static Collection<Object[][]> data() {
        //prepare data
        //each row is one test, each object in row is placeholder1/2... for this test case 
    }

    @Test
    public void yourTest() {...}
}

org.junit.runners.ParameterizedのJavaDocsでは、フィボナッチ数テストの例を見つけることができます。

于 2012-08-07T10:37:55.313 に答える