我想在清单文件中添加自定义属性/属性,并能够在运行时读取它.我想这样做,所以我可以通过这些清单属性自定义应用程序的行为.如何才能做到这一点?
英语可能含糊不清,在我看来,采用Gherkin的方法有一个假设,即在某种程度上说英语的人,即使在任何代码编写之前,也可以编写和理解测试用例.
因此,考虑到以下需要自动化的简单测试场景,该方法如何指导您工作:
在库应用程序中,要向库中添加书籍,用户单击"添加",弹出"书籍信息"对话框,并且用户需要填写书名等,然后单击"确定".
假设QA人员写下以下内容:
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
Then the Book Info dialog is displayed
Run Code Online (Sandbox Code Playgroud)
够简单吗?这是一个很好的测试吗?我想我会说英语,但我不明白.
对话框中的字段应为空,也许某些字段应具有某些默认值或初始值.也许测试人员期望实现"然后显示书本信息"对话框以确保所有这些,但实现者是否知道这一点?怎么沟通?
也许测试应该写成
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
Then the Book Info dialog is displayed and all the fields are empty
Run Code Online (Sandbox Code Playgroud)
添加点击和显示的对话框之间可能需要几秒钟.因此,测试可能会失败,因为如果对话框已启动,或者没有等待足够长的时间来显示对话框,并且测试失败,则实施过早检查.
进行手动测试的人不需要涉及该问题,除非对话框出现需要很长时间.所以上面就是这个人编写测试的原因(所以这里的重点是测试人员需要足够聪明才能考虑到这一点,或者某些开发人员需要解释这一点,或者他们只是在测试失败后修复它) .
不知何故,这个简单的动作需要更多信息......什么时候在编写测试的人和实现测试操作的人之间进行通信?
也许测试应该写成
Scenario: clicking …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Android,我想我错过了一些东西.在Android中,您似乎在开发时决定哪个活动将首先在您的应用程序中显示.
我想以这样的方式编写我的应用程序:某种集中控制器开始执行,它决定哪个活动应该是第一个(例如,基于从某处获得的某些数据)
是可以的,如果是的话,怎么做?谢谢.
我正在寻找一个SWT小部件,其外观和行为类似于Swing的JPlitPane.在SWT中是否有这样的小部件,如果没有,最接近它的是什么?(一个窗格分为两个,可以移动两个部分之间的边框)
我有一个做一些事情的线程.其中一个就是睡一段时间.正常睡眠后,它调用delayFinished()方法,但如果睡眠中断,则delayFinished()不应调用.我还需要一个中止睡眠的方法,可以被其他线程调用.
所以这是捕获我的意图的实现,但我认为它不会起作用:
public class MyThread extends Thread {
private boolean sleeping=false;
private Object sleepingControl=new Object();
//... other unrelated stuff...
private void delay() {
try {
synchronized(sleepingControl) {
sleeping=true;
sleep(delay);
sleeping=false;
delayFinished();
}
} catch (InterruptedException e) {
sleeping=false;
}
}
public void abortDelay() {
synchronized(sleepingControl) {
if (sleeping)
interrupt();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果delay()被调用,并且在它休眠时,abortDelay()由另一个线程(主用例)abortDelay()调用,则会挂起在synchronized语句上,因为调用者delay()拥有该监视器并且还没有放弃它.
另一方面,如果以这种方式实现延迟:
private void delay() {
synchronized(sleepingControl) {
sleeping=true;
}
try {
sleep(delay);
Run Code Online (Sandbox Code Playgroud)
它可能delay()被调用,完成同步块设置睡眠为真,但随后 …
我将 Hibernate 与 Spring 框架一起使用,并遇到了Opportunistic Locking,所以我有一个基本问题:
Hibernate 是否会在调用 setter 时立即考虑对象“已更改/脏”,例如:theEmployee.setAge(32)因此,即使age已32更改,它也会被视为“已更改”,或者 Hibernate 会发现即使调用了 setter,对象实际上没有改变?
换句话说,如果我想防止不必要的写入,是否有必要进行编码:
if (theEmployee.getAge() != age) { theEmployee.setAge(age); }
Run Code Online (Sandbox Code Playgroud)
...或者编码就足够了: theEmployee.setAge(age);
在大多数情况下,这两个SQL语句中的哪一个会花费更少的时间?
1)
SELECT table_a.foo,
table_b.zoo
FROM table_a,
table_b
WHERE table_a.id = table_b.id
AND table_b.bar = 'something'
Run Code Online (Sandbox Code Playgroud)
2)
SELECT table_a.foo,
tableb.zoo
FROM table_a,
(SELECT *
FROM table_b
WHERE bar = 'something') AS tableb
WHERE table_a.id = tableb.id
Run Code Online (Sandbox Code Playgroud)
或者他们是一样的吗?
似乎(2)会更快......
java ×3
android ×2
gherkin ×1
hibernate ×1
join ×1
jsplitpane ×1
performance ×1
select ×1
sql ×1
swing ×1
swt ×1
synchronized ×1