Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法避免不同背景下的重复场景?_Java_Testing_Background_Cucumber - Fatal编程技术网

Java 有没有办法避免不同背景下的重复场景?

Java 有没有办法避免不同背景下的重复场景?,java,testing,background,cucumber,Java,Testing,Background,Cucumber,我们开始使用cucumber(Java)并非常喜欢它,但cucumber在一个非常重要的情况下似乎完全失败了: 基本上,我有一个为给定登录用户运行的场景,我需要用不同类型的登录用户运行所有相同的测试 然后,我需要运行大多数完全相同的场景,用户使用不同的角色登录(具有重叠权限的多个角色) 这将是干净和琐碎的背景大纲功能,但这似乎已被否认多年前() 我知道以前有人问过这个问题,但我一直在寻找非常老的线索(大约有6年了!),除了“复制所有场景”之外,没有其他答案 复制数百个场景在每个方面都是失败的,这

我们开始使用cucumber(Java)并非常喜欢它,但cucumber在一个非常重要的情况下似乎完全失败了:

基本上,我有一个为给定登录用户运行的场景,我需要用不同类型的登录用户运行所有相同的测试

然后,我需要运行大多数完全相同的场景,用户使用不同的角色登录(具有重叠权限的多个角色)

这将是干净和琐碎的背景大纲功能,但这似乎已被否认多年前()

我知道以前有人问过这个问题,但我一直在寻找非常老的线索(大约有6年了!),除了“复制所有场景”之外,没有其他答案

复制数百个场景在每个方面都是失败的,这会使测试库无法管理(一个场景中的更改需要传播到多个副本)。它在cucumber的核心通信目标中失败了,因为我们得到了大量的功能文件,这使得我们很难知道该应用程序正在做什么以及我们正在测试什么

在第一次投诉后的6年内,是否有合理的方法来管理

在这一点上,我试图删除背景并将其移动到每个场景中,并使用场景大纲,这很难看,测试不再清晰易懂,但至少我不需要复制场景

然后,我需要运行大多数完全相同的场景,用户使用不同的角色登录(具有重叠权限的多个角色)

您想测试一个权限,但实际上是在测试角色。在我看来,这是造成你大部分问题的原因。由于角色通常是配置好的,所以您可以利用此系统

Given a customer service rep with the authority to grant refunds 
  And a customer reports a problems with the PX-11 Widget
 When customer service resolves the problem by granting a refund
 Then problem ticket is closed
  And a refund request is lodged with finance
在给定步骤中,您将为客户服务代表创建一个可以授予退款的新角色

如果您担心角色之间可能会以奇怪的方式相互影响,您应该尝试在较低级别上解决并测试这一问题。这不应该是一个问题,回到你的验收测试

<>如果你不能这样做,你可能想考虑下面三个选项中的任何一个。它将以增加测试复杂性为代价,保持小黄瓜的可读性。但这种复杂性表明系统存在问题

  • 除了您关心的其他权限外,还使用请求的权限创建多个客户服务代表。然后在每个后续步骤中,让所有代表执行特定操作

  • 对于每个测试,除了请求的权限外,随机选择一个或多个权限

  • 随机选择具有所需权限的角色


  • 对不起,我不知道;我不认为你有问题。基本上我有100个这样的测试背景:假设我们以管理员身份登录到应用程序场景1-100。。做事。在一种情况下,我需要背景:以经理身份登录场景1-70使用背景提纲做事情(完全相同的场景步骤)。这很简单,我可以在不同的背景下使用相同的场景。这似乎是不可能的,所以我必须复制我的场景,它会创建大量重复的代码,这不是一个站得住脚的测试解决方案。80%的重复测试代码是可怕的