问题就是这一切.有没有办法在合并之前执行操作?我猜有一种方法可以使用pre-commit钩子,但我不太确定.
我最近遇到了使用selenium的clear()问题,在测试后期输入文本时调用自定义文本框会导致问题.文本框会检查(JavaScript)browserEvents,特别是keyDown事件.我试着搞清楚clear()看看是否会影响事情,但我似乎无法找到任何具体细节.
Selenium Java绑定的源代码显示clear()不使用键盘或鼠标模拟来清除文本框中的文本.那究竟是什么呢?
几个月前,我不得不修复一些导致一些问题的代码.代码看起来基本上是这样的:
int badFun() { return badFun(); }
这显然导致了堆栈溢出,即使在我正在使用的高级语言中(SilkTest中的4Test).这段代码无法被视为有益.问题的第一个迹象是脚本完成后看到的警告,但没有编译错误或警告.奇怪的是,我尝试用C++,C#和Python编写具有相同结构的程序,并且所有这些程序都编译/解释时没有语法错误或警告,即使在所有情况下都存在运行时错误.在任何这些情况下我都没有看到任何警告.为什么默认情况下这不是一个可能的问题?
编辑:我尝试在所有三种语言中编写相应的函数,所以我添加了这些函数标签.我对代码这样的代码没有任何警告的整体原因更感兴趣.如有必要,请重新登记.
我今天正在帮助一个同事,发现git branch -D并git branch -d做了一些不同的事情.从git帮助文档:
-d --delete delete fully merged branch
-D delete branch (even if not merged)
Run Code Online (Sandbox Code Playgroud)
我可以欣赏避免任意删除分支,但git如何确定何时branch -d允许?什么时候有人会branch -d正确使用?
假设我有一个Enum定义如下:
public enum Sample{
// suppose AClass.getValue() returns an int
A(AClass.getValue()),
B(AClass.getValue()),
C(AClass.getValue());
private int _value;
private Sample(int _val){
this._value = _val;
}
public int getVal(){
return _value;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Sample.A或Sample.A.getAVal()不使用问题来提取值。
现在假设AClass.getValue()可以使用一个参数来返回可能不同的特定值,例如AClass.getValue(42)。
是否可以将参数传递给公共Enum方法并检索Enum值?换句话说,我可以有一个Enum定义吗
public enum Sample{
// suppose AClass.getValue() returns an int
A(AClass.getAValue()),
B(AClass.getBValue()),
C(AClass.getCValue());
private int _value;
private Sample(int _val){
this._value = _val;
}
public int getVal(){
return _value;
}
public int getVal(int a){
// somehow pull out AClass.getAValue(a)
}
Run Code Online (Sandbox Code Playgroud)
使用Sample.A.getValue(42) …
大约一年半的时间里,我一直在使用SilkTest,这是一个GUI自动化工具,适用于桌面和Web应用程序.它模拟鼠标和键盘输入,最终模拟最终用户行为.但是,我发现它有点片状; 连续工作9次的Button.Click()或DialogBox.Close()方法调用似乎在第10次调用时失败,只在11日返回工作.通常情况下,我会用SilkTest(或测试中的应用程序,或操作系统,或者你有什么)来解决这个问题,但后来我发现其他GUI自动化工具(如Selenium)存在类似问题:
Selenium Click()因Anchor Elements而失败
我知道对于桌面应用程序,每个GUI控件/对话框都有一个与之关联的标记元素(至少在基于Windows的GUI中),对于网页,还有页面元素的域对象模型层次结构.我的猜测是,这些工具有时会遇到导航这些层次结构并找到独特元素和控件的问题.但是这里发生了什么?SilkTest是一个相对陈旧的商业软件包,而selenium是相对较新的,开源的并且在不断发展.他们俩都有类似问题的事实会给我带来一些旗帜.
另外,这是其他GUI测试工具的情况吗?或者我有一个不寻常的经历?
我们目前正在努力在我们公司建立一个良好的测试框架。它适用于中型到大型网络应用程序,可能有几十个页面。我们目前主要编写基于 WebDriver Selenium UI 的测试。
我们正在尝试确定一些编码标准,我们正在讨论的一件事是是否使用始终返回PO(即使页面相同)的页面对象(PO),仅当您离开当前页面时才返回PO一件新的,甚至不退回 PO。我一直认为返回 PO 是 PO 设计模式的一个关键特性,但我对此可能是错误的。
基本上,我们尝试在以下模式之间做出决定:
class SomePage {
// constructor
public SomePage(Driver) { //... }
// always return a page object
public SomePage fillInTextField(String val){
// details
return new SomePage(driver);
// only return a PO if it's a different page
public void fillInTextField(String val){
// details
return;
}
Run Code Online (Sandbox Code Playgroud)
其中一个比另一个更可取吗?
假设我有一个包含Java中枚举的类.是否可以从包含枚举的类中访问方法?举个例子:
public class Foo {
private string getClassVal() { return "42"; }
public string getOtherClassVal() { return "TheAnswer"; }
public enum Things {
ONE("One"),
TWO("Two"),
THREE("Three");
private String _val;
private Things(String val) { _val = val; }
// This method is the problem
public String getSomeVal() {
return _val + this.getClassVal();
}
// And this one doesn't work either
public String getSomeOtherVal() {
return _val + this.getOtherClassVal();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道带有注释的上述枚举方法不起作用并导致错误,因为上下文中的this内容.我正在寻找的是我可以从枚举中访问"外部"类方法的东西.或者这是正确的方法吗?
这样的事情可能吗?或者枚举是否锁定在外部方法中,即使在课程中也是如此?
最近我的任务是在C#中为桌面应用程序编写和运行单元测试.在过去,我主要编写了自动化功能/ GUI测试.这些可以在专用QA机器上运行,因为这些测试可能会导致崩溃,数据丢失,蓝屏死机等.是否应该为运行单元测试进行类似的设置?在我的本地机器上运行单元测试有任何风险吗?
我不小心写了一些代码,其中包含今天看起来的行:
public void fun1(args){
fun2(args);
}
public void fun2(args){
fun1(args);
}
Run Code Online (Sandbox Code Playgroud)
这是在Java中,所以当代码运行时,它会产生堆栈溢出并且代码崩溃.没问题.
但这是基于Java的,我也在其他语言中看到过这种情况(主要是OO或命令式语言).是否有任何语言支持递归,这不会导致堆栈溢出,但可能是不同的错误类型?或者"允许"无限循环无限期运行,也许有足够的内存?