小编Dav*_*ave的帖子

如何根据条件自动跳过某些JUnit测试?

我想要一个简单的方法为我的JUnit测试分配一个优先级值,这样我就可以说'只运行优先级1测试','运行优先级1,2和3测试'等等.我知道我可以只包括一行就像Assume.assumeTrue("Test skipped for priority " + priority, priority <= 2);在每个测试(其中的开始priority是最高值优先测试,我想运行,并2为这个特殊的测试的优先级值),但是复制粘贴在每个测试的开始行似乎没有一个很好的解决方案.

我尝试使用一个简单的注释编写解决方案,该注释由我正在使用的JUnit规则检测:

public class Tests {
    @Rule
    public TestRules rules = new TestRules();
    @Test
    @Priority(2)
    public void test1() {
        // perform test
    }
}

public class TestRules extends TestWatcher {
    private int priority = 1; // this value is manually changed to set the priority of tests to run
    @Override
    protected void starting(Description desc) {
        Priority testCasePriority = desc.getAnnotation(Priority.class);
        Assume.assumeTrue("Test skipped for priotity " + …
Run Code Online (Sandbox Code Playgroud)

java junit junit-rule

6
推荐指数
1
解决办法
1506
查看次数

使用 Actions.sendKeys() 还是 WebElement.sendKeys() 来模拟用户使用 Selenium WebDriver 键入是否更好?

据我所知,有两种使用 Selenium 打字的方法:

new Actions(webDriver).sendKeys("text to send").perform();
webElement.sendKeys("text to send");
Run Code Online (Sandbox Code Playgroud)

Actions方法似乎是复制用户键入的最自然的方式,因为按键被发送到浏览器想要的任何地方(我相信正在幕后使用名为 sendKeysToActiveElement 的方法)。然而,许多教程指导测试人员使用该WebElement方法(这实际上是使用 SafariDriver 时的唯一选择),我认为因为它更简单。

Actions方法实际上是更好地模拟用户交互,还是我应该WebElement为了方便而使用该方法?

selenium browser-automation selenium-webdriver

5
推荐指数
1
解决办法
1万
查看次数

为什么我不能总是使用 Ctrl-C 终止 docker 进程?

我有一个脚本,我想选择在容器中运行。我观察到,如果我运行一个中间脚本,它可以被杀死Ctrl-C,但是如果我不这样做,它就不能。
这是一个例子
test1.sh::

#!/bin/bash

if [ "${1}" = true ]; then
  while true; do echo "args: $@"; sleep 1; done
else
  docker run --rm -it $(docker build -f basic-Dockerfile -q .) /test2.sh $@
fi
Run Code Online (Sandbox Code Playgroud)

test2.sh:

#!/bin/bash

/test1.sh true $@
Run Code Online (Sandbox Code Playgroud)

basic-Dockerfile:

FROM alpine:3.7

RUN apk add --no-cache bash
COPY test1.sh test2.sh /
ENTRYPOINT ["bash"]
Run Code Online (Sandbox Code Playgroud)

运行./test1.sh true foo bar会愉快地打印出true foo bar,并且运行./test1.sh foo bar会在容器中执行相同的操作。发送Ctrl-C将终止进程并按预期删除容器。但是,如果我尝试通过更改
为来消除对额外文件的需要:/test2.sh $@/test1.sh true $@ …

docker

0
推荐指数
1
解决办法
3808
查看次数