我在我的电脑中使用Firefox作为默认浏览器.
我需要在Netbeans 6.5中开发Web应用程序(JSP)项目,每次运行项目时,它都在Firefox中运行.
我想在IE中运行我的Web应用程序进行测试,但不能更改我的默认Web浏览器.
给定软件......
...我喜欢编写每个子系统或组件的自动化测试.
我没有为组件的每个内部类编写测试(因为每个类都有助于组件的公共功能,因此可以通过组件的公共API从外部测试/测试).
当我重构组件的实现时(我经常这样做,作为添加新功能的一部分),因此我不需要改变任何现有的自动化测试:因为测试仅依赖于组件的公共API和公共API通常是扩大而不是改变.
我认为这个政策与重构测试代码这样的文件形成了鲜明的对比,后者说...
...所有这些我认为我不同意(或至少不练习).
我的问题是,如果你不同意我的政策,你会解释原因吗?在什么情况下这种测试程度不足?
综上所述:
脚注:我的一些"测试用例"实际上是作为数据实现的.例如,UI的测试用例包含数据文件,其中包含各种用户输入和相应的预期系统输出.测试系统意味着拥有测试代码,该代码读取每个数据文件,将输入重放到系统中,并断言它获得相应的预期输出.
虽然我很少需要更改测试代码(因为公共API通常是添加而不是更改),但我发现有时候(例如每周两次)需要更改一些现有的数据文件.当我更好地更改系统输出(即新功能改进现有输出)时可能会发生这种情况,这可能导致现有测试"失败"(因为测试代码只会尝试断言输出没有改变).要处理这些情况,我会执行以下操作:
脚注:通过"组件",我的意思是"一个DLL"或"一个组件"...这个大到足以在系统的体系结构或部署图上可见,通常使用数十个或100个类实现,以及因此与公共API只包含约1或接口少数......一些可能被分配到的开发商之一的团队(其中不同的组件被分配到不同的团队),并且将根据康威定律有一个相对稳定的公共API.
脚注:文章面向对象测试:神话与现实说,
神话:黑盒测试就足够了. 如果您使用类接口或规范仔细测试测试用例设计,则可以确保该类已经完全运用.白盒测试(查看方法的实现来设计测试)违反了封装的概念.
现实:OO结构很重要,第二部分.许多研究表明,开发人员认为黑盒测试套件非常彻底,只能在测试实施中使用三分之一到一半的语句(更不用说路径或状态)了.这有三个原因.首先,选择的输入或状态通常执行正常路径,但不强制所有可能的路径/状态.其次,单独的黑盒测试无法揭示惊喜.假设我们已经测试了被测系统的所有指定行为.为了确信没有未指明的行为,我们需要知道系统的任何部分是否未被黑盒测试套件执行.获取此信息的唯一方法是通过代码检测.第三,通常很难在不检查源代码的情况下执行异常和错误处理.
我应该补充一点,我正在进行白盒功能测试:我看到了代码(在实现中),我编写了功能测试(驱动公共API)来练习各种代码分支(功能实现的细节).
refactoring integration-testing automated-tests unit-testing code-coverage
如何在运行时更新此环境变量,以便ctypes可以在任何地方加载库?我尝试了以下,似乎都没有工作.
from ctypes import *
os.environ['LD_LIBRARY_PATH'] = "/home/starlon/Projects/pyCFA635/lib"
os.putenv('LD_LIBRARY_PATH', "/home/starlon/Projects/pyCFA635/lib")
lib = CDLL("libevaluator.so")
Run Code Online (Sandbox Code Playgroud) 递归是一种"分而治之"的风格,它在变小(树数据结构)时分裂,我希望它在发现违规时完全破坏,意味着打破所有递归路径,并返回true.这可能吗?
我们正在尝试使用(几乎)所有新开发工作中使用的Model-View-Presenter模式.
我坚信有一个框架可以帮助人们满足设计要求,我们有一些内部框架可以用于各种不同的组件(日志记录,电子邮件发送等),所以我试图获得某种MVP框架开发.
我已经设法将一些易于使用的东西放在那些不熟悉MVP并且与我们目前的工作方式相差不远的人身上.问题在于它正在与1个演示者建立1个视图的关系.
这是框架的大致轮廓:
public abstract class Presenter<TView> where TView : IView {
public virtual T View { get; set; }
public virtual void Setup(TView view) {
this.View = view;
}
}
public interface IView { }
Run Code Online (Sandbox Code Playgroud)
它的基本工作方式是创建的任何View都继承自IView接口,并传递给继承自抽象类的PresenterPresenter类.
正如您所看到的,我正在使用.NET泛型,以便开发人员在处理演示者时可以强大地键入View(最后是从演示者继承的类).
所以我可以像这样设置一个基本的登录组件:
public class Login : Presenter<ILogin> {
public override Setup(ILogin view){
base.Setup(view);
this.View.Login += new EventHandler(login);
}
void login(object sender, EventArgs e) { ... }
}
public interface ILogin : IView { …Run Code Online (Sandbox Code Playgroud) 我使用ListBox在数据库中显示表的内容.每个列表框项都填充了Text属性设置为友好名称,Value属性设置为唯一ID列.数据库结构可能类似于以下内容:
CREATE TABLE GENERIC { FRIENDLY_NAME TEXT, ID INT }
Run Code Online (Sandbox Code Playgroud)
我尝试使用LINQ将列表框的项目转换为int []差不多一个小时,最终失败了.区分所选项目和未选择项目也很重要.这是我最后写的:
System.Collections.Generic.LinkedList<int>
selected = new LinkedList<int>(),
notSelected = new LinkedList<int>();
foreach (ListItem item in PhotoGalleryEdit_PhotoShoots.Items)
{
if (item.Selected)
selected.AddFirst(Convert.ToInt32(item.Value));
else
notSelected.AddFirst(Convert.ToInt32(item.Value));
}
int []arraySelected = selected.ToArray();
int []arrayNotSelected = notSelected.ToArray();
Run Code Online (Sandbox Code Playgroud)
任何人都可以在LINQ中展示如何做到这一点?
(我在C#中编写了所有代码,但用VB编写的任何答案都非常受欢迎)
我一直想知道python中的reload()函数,如果不小心使用它似乎会导致问题.
你为什么要重新加载一个模块,而不是再次停止/启动python?
我想一个应用程序可能是以交互方式测试模块的更改.
为什么这样做:
((Excel.Worksheet)Application.ActiveSheet).get_Range("A1", "A1").Value2 = text;
Run Code Online (Sandbox Code Playgroud)
但这不是:
Excel.Worksheet activeSheet = ((Excel.Worksheet)Application.ActiveSheet);
activeSheet.Cells[0, 0] = text;
Run Code Online (Sandbox Code Playgroud)
我需要第二种方式,因为我需要使用rowIndex和colIndex循环.我怎样才能做到这一点?
我收到错误:
mscorlib.dll中发生未处理的"System.Runtime.InteropServices.COMException"类型的异常附加信息:来自HRESULT的异常:0x800A03EC
.net ×4
c# ×3
python ×2
asp.net ×1
asp.net-3.5 ×1
ctypes ×1
dll ×1
enums ×1
excel ×1
java ×1
linq ×1
listbox ×1
mvp ×1
netbeans ×1
netbeans6.5 ×1
recursion ×1
refactoring ×1
unit-testing ×1