相关疑难解决方法(0)

什么是良好的单元测试?

我相信大多数人都在编写大量的自动化测试,而且在进行单元测试时你也遇到了一些常见的陷阱.

我的问题是你是否遵循任何编写测试的行为规则以避免将来出现问题?更具体一点:良好单元测试属性是什么,或者您如何编写测试?

鼓励语言不可知的建议.

language-agnostic tdd integration-testing unit-testing testing-strategies

97
推荐指数
11
解决办法
4万
查看次数

TDD FIRST原则

我不明白如何在以下代码中遵守TDD FIRST原则.

以下是关于FIRST原则的说明:

  • 快速:快速运行(子集)测试(因为您将一直运行它们)
  • 独立:没有测试依赖于其他测试,因此可以按任何顺序运行任何子集
  • 可重复:运行N次,得到相同的结果(以帮助隔离错误并启用自动化)
  • 自检:测试可以自动检测是否通过(没有人工检查输出)
  • 及时:与被测代码同时写入(使用TDD,先写!)

测验问题:

莎莉希望她的网站在每个月的第一个星期二有特别的布局.她有以下控制器和测试代码:

# HomeController
 def index
   if Time.now.tuesday?
     render 'special_index'
   else
     render 'index'
   end
 end

 # HomeControllerSpec
 it "should render special template on Tuesdays" do
   get 'index'
   if Time.now.tuesday?
     response.should render_template('special_index')
   else
     response.should render_template('index')
   end
 end
Run Code Online (Sandbox Code Playgroud)

没有遵循什么第一原则?

  1. 快速
  2. 独立
  3. 重复
  4. 自检
  5. 及时

我不确定哪个FIRST原则没有被遵守:

  • 快速:代码似乎很快,因为它的测试并不复杂.
  • 独立:测试不依赖于其他测试.
  • 可重复:每次测试都会得到相同的结果.'special_index'如果它是星期二,'index'如果它不是星期二.
  • 自检:测试可以自动检测是否通过.
  • 及时:代码和测试代码同时显示在此处.

我在测验中选择了Timely,因为测试代码是在控制器代码之后呈现的.但我提出的问题是错误的,回想起来,这不是一个好的选择.我不确定这里没有遵循哪个FIRST原则.

tdd

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

WebDriver等待如何等待项目存在或不存在?

我正在使用Selenium WebDriver运行测试,如果用户没有访问权限,则页面上不存在div.我正在尝试等待,以便如果显示该项目,则返回true,但如果它达到超时,则返回false.

    public bool SummaryDisplayed()
    {
        var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(5));
        var myElement = wait.Until(x => x.FindElement(By.Id("summaryPage")));
        return  myElement.Displayed;
    }
Run Code Online (Sandbox Code Playgroud)

我不想使用Thread.Sleep,因为如果2秒后元素存在,我希望它继续.但是如果5秒后元素不存在则返回false.我不希望它抛出异常,在某些测试用例中我预计它不存在.有没有办法可以抑制异常并在超时后返回false?谢谢

c# selenium selenium-webdriver

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