基本上我试图用C#来完成NUnit非常简单,但是使用Java测试框架。
我想用Java实现的目标在C#的Nunit中会是这样的:
[Test]
[TestCase(ProcessTypes.A, "a", false, true, false), Category("Smoke")]
[TestCase(ProcessTypes.A, "A", false, false, true), Category("Functional")]
[TestCase(ProcessTypes.A, "*", false, false, false), Category("Functional")]
public void ProcessIsResponding(ProcessTypes ProcessType, string password, bool lengthPass, bool lowercasePass, bool uppercasePass) {
...
// perform test using parameters
...
}
在这种情况下,我编写了一个测试方法并使用注释来定义参数值,这些值只需要匹配测试方法参数。然后,每次使用一组不同的参数值为每个TestCase注释调用它。这比使用参数名称注释测试并将值放在外部XML文件中更加实用...... DataProvider
s当你进行大量测试时非常麻烦。
似乎TestNG是最有前途的框架,但它在xml文件中有整个"参数值"建筑,这很糟糕。
如果其他人有这种结构,我愿意投入巫术框架。
这可以通过其他任何Java测试框架来实现吗?
答案 0 :(得分:1)
您提到的所有测试框架都允许在启动时加载属性,这可以用来代替参数。可以从命令行,环境变量,属性文件等中读取属性。
TestNG还允许参数,例如
import org.testng.annotations.Parameters; import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Test
@Parameters("myName")
public void parameterTest(String myName) {
System.out.println("Parameterized value is : " + myName);
}
}
看看:http://www.tutorialspoint.com/testng/testng_parameterized_test.htm
答案 1 :(得分:1)
在java注释中,您只能使用简单类型。在junit中,您可以使用zohhak进行参数化测试。它让你写的
@TestWith({
"clerk, 45'000 USD, GOLD",
"supervisor, 60'000 GBP, PLATINUM"
})
public void canAcceptDebit(Employee employee, Money money, ClientType clientType) {
assertTrue( employee.canAcceptDebit(money, clientType) );
}
我不知道testNG中是否有类似的内容,但使用自定义数据提供程序扫描当前测试方法的注释相当容易实现
您还可以查看spock。它让你在groovy中编写测试(并将它们作为junit运行)因此你有更强大的语法