有没有办法做到这一点?我正在编写一个与网站交互作为内容脚本的扩展程序,并使用localstorage保存数据.是否有可用于测试此行为的工具,框架等?我意识到有一些用于测试javascript的通用工具,但是那些足以测试扩展的能力吗?单元测试是最重要的,但我也对其他类型的测试(例如集成测试)感兴趣.
规范有一个context.measureText(文本)函数,它将告诉你打印该文本需要多少宽度,但我找不到一种方法来找出它有多高.我知道它基于字体,但我不知道将字体字符串转换为文本高度.
如果用户在您的网站上并在新标签页中打开另一个链接(也是您的网站),是否可以将其与用户区别开来?这可以是javascript,在服务器上,无论如何.
我猜答案是你不能这样做,但我想仔细检查一下.
拿一些像这样的代码
if (person.IsMale()) {
doGuyStuff();
} else {
doGirlStuff();
}
Run Code Online (Sandbox Code Playgroud)
是否应该写入以明确检查是否person.isFemale(),然后添加一个抛出异常的新else?也许你正在检查枚举中的值,或类似的东西.你认为没有人会在枚举中添加新的元素,但谁知道呢?"永远不会发生"听起来像着名的遗言.
典型的用例是针对简单的事情,比如@Override,但显然你可以用它们做更多的事情.如果你突破它们的极限,就会得到像Project Lombok这样的东西,尽管我的理解是这是一个巨大的滥用注释.你到底能做什么?您可以在编译时和注释运行时执行哪些操作?你能做什么?
我在Javascript中使用模块模式将我的公共接口与私有实现分开.为了简化我正在做的事情,我的代码生成了一个图表.该图表由多个部分(轴,标签,图,图例等)组成.我的代码如下所示:
var Graph = function() {
var private_data;
function draw_legend() { ... }
function draw_plot() { ... }
function helper_func() { ... }
...
return {
add_data: function(data) {
private_data = data;
},
draw: function() {
draw_legend()
draw_plot()
}
}
}
Run Code Online (Sandbox Code Playgroud)
有些人主张只测试你的类的公共接口,这是有道理的,但我真的想进行一些测试来分别测试每个组件.如果我搞砸了我的draw_legend()函数,我希望测试失败,而不是公共draw()函数的测试.我在这里走错了路吗?
我可以将不同类中的每个组件分开,例如创建一个Legend类.但是,为有时只有5到10行代码创建一个类似乎很愚蠢,而且它会更加丑陋,因为我需要传递一堆私有状态.而且我无法测试我的助手功能.我还应该这样做吗?我应该吸吮它,只测试公共抽奖()吗?还是有其他解决方案吗?
我正在尝试做类似的事情
var=0
grep "foo" bar | while read line; do
var=1
done
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为管道导致while在子shell中运行.有一个更好的方法吗?如果有另一种解决方案,我不需要使用"读取".
我看过类似的Bash变量范围,但我无法从中获得任何有用的东西.
我不确定这会有多大用处,但我认为将程序中使用的对象可视化以及从哪里引用哪些对象可能很简洁.我猜它会产生一些像graphviz这样的程序会使用的数据.是否有任何工具可以做到这一点,否则我自己有多难?理想情况下,这适用于任何任意程序,但如果有必要,我可以对代码进行一些修改(例如添加dumpObjects()调用或其他)
我有兴趣为java做这个,但如果有其他语言的解决方案,请发布它们.
我写了一个有地图的类<String, Object>.我需要它来保存任意对象,但有时我需要投射一些这些对象,所以我会做类似的事情
HashMap<String, Object> map = new HashMap<String, Object>();
Object foo = map.get("bar");
if (foo instanceof HashMap) {
((HashMap<String, Integer>) foo).put("a", 5);
}
Run Code Online (Sandbox Code Playgroud)
这给出了警告
Stuff.java:10: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.HashMap<java.lang.String,java.lang.Integer>
((HashMap<String, Integer>) foo).put("a", 5);
Run Code Online (Sandbox Code Playgroud)
我怀疑它与泛型的使用有关.我可以使用@SupressWarnings("unchecked")摆脱错误,但我想知道是否有更好的方法来做到这一点.或许我得到警告的事实意味着我应该重新考虑我正在做的事情.有什么我可以做的,或者我应该只使用@SupressWarnings?
假设我有一个方法需要一些参数并将它们存储为实例变量.如果其中一个为null,则稍后某些代码将崩溃.如果提供了null参数,你会修改抛出异常的方法,并添加单元测试来检查它吗?如果我这样做,它稍微复杂一点,因为javascript有很多坏的值(null,undefined,NaN等),并且由于它有动态类型,我甚至无法检查是否传入了正确类型的对象.
javascript ×4
java ×3
unit-testing ×3
annotations ×1
bash ×1
canvas ×1
casting ×1
conditional ×1
generics ×1
tabs ×1
text ×1