gpt4 book ai didi

java - 如何在 Eclipse 中使用 JUnit 和 groovy?

转载 作者:行者123 更新时间:2023-12-02 07:38:51 24 4
gpt4 key购买 nike

我是 JUnit 新手,关注 this tutorial但需要一些关于我的测试用例的建议和理解

我的文件夹中有一些 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 )
}
}

最佳答案

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 中您可以找到斐波那数测试的示例。

关于java - 如何在 Eclipse 中使用 JUnit 和 groovy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com