我有一个简单的程序:
function counterPattern() {
for (let i = 1; i <= 100; i++) {
if (i % 3 === 0 && i % 5 === 0) {
console.log("c");
} else if (i % 3 === 0) {
console.log("a");
} else if (i % 5 === 0) {
console.log("b");
}
}
}
counterPattern();
我被要求逐步改进上述功能:
这导致我更改函数以使其适合编写单元测试。
以下是这方面的尝试:
function counterPattern(){
const pattern = []; // for making it unit-testable; returning pattern will help with snapshotting/matching without losing the order;
for ( let i=1; i<=100 ; i++ ) {
const rem3 = i % 3; // separate calculation to + the speed; same for next-line;
const rem5 = i % 5;
if ( rem3 === 0 && rem5 === 0 ) {
pattern.push('c');
}else if ( rem3 === 0 ){
pattern.push('a');
}else if ( rem5 === 0){
pattern.push('b');
}
}
// returning array would allow the caller to format the pattern
return pattern;
}
let result = counterPattern();
console.log(result);
原程序的编写方式如何不同:
你对我的尝试有什么意见吗?
关于算法的速度,有以下考虑:
因此,您可以将该模式硬编码到代码中,并执行对应于范围 1..15 的输出,然后重复:
function counterPattern() {
for (let i = 0; i < 90; i += 15) {
console.log("a"); // 3 + i
console.log("b"); // 5 + i
console.log("a"); // 6 + i
console.log("a"); // 9 + i
console.log("b"); // 10 + i
console.log("a"); // 12 + i
console.log("c"); // 15 + i
}
// The remainder: values between 90 and 100:
console.log("a"); // 93
console.log("b"); // 95
console.log("a"); // 96
console.log("a"); // 99
console.log("b"); // 100
}
counterPattern();
我正在尝试使用测试驱动设计方法编写一个应用程序--我对单元测试很陌生,所以我只是想知道测试正确输入和异常的正确方法是什么。 我有一个用于加载配置文件的类: null 另外,这3个测试是否都有try{}catch(){}语句?在第一个测试中,正确性是隐含的,在第二个和第三个测试中,我无论如何都在检查异常,所以异常对测试没有影响。
问题内容: 我有一堂课要添加单元测试。该类具有多个构造函数,这些构造函数采用不同的类型并将其转换为规范形式,然后可以将其转换为其他类型。 实际上,它接受并转换为其他两种类型。 我正在尝试找出最合适的方法来测试这些构造函数。 应该有一个针对每个构造函数的测试和输出类型: 这导致许多不同的测试。如您所见,我正在努力命名它们。 应该有多个断言: 这有多个断言,这使我感到不舒服。它还正在测试getStri
问题内容: 具体来说,我正在尝试为需要用于在Windows和Unix上构建路径的方法创建单元测试。该代码必须在两个平台上都可以运行,但是当我尝试更改此static final字段时,却遇到了JUnit错误。 任何人都知道发生了什么事吗? 当我这样做时,我得到 有什么想法吗? 问题答案: 从文档中: 如果基础字段是final,则该方法将为该字段成功地抛出除非, 并且该字段是非静态的 。 因此,在第一
单元测试,对独立的代码功能片段,由编写代码的团队进行测试,也是一种编码,而非与之不同的一些事情。设计代码的一部分就是设计它该如何被测试。你应该写一个测试计划,即使它只是一句话。有时候测试很简单:“这个按钮看起来好吗?”,有时候它很复杂:“这个匹配算法可以精确地返回正确的匹配结果?”。 无论任何可能的时候,使用断言检查以及测试驱动。这不仅能尽早发现 bug,而且在之后也很有用,让你在其他方面担心的谜
<代码>list.stream()。 列表中的每个项目都将从数据库中删除。 假设列表中有3个项目,如何进行单元测试: 删除被调用了3次。 删除被称为“按顺序/顺序”,即列表中的元素顺序?
null 不久以前,developerWorks 的作者 Andrew Glover 撰写了一篇介绍 Groovy 的文章,该文章是 alt.lang.jre 系列的一部分,而 Groovy 是一个新提议的用于 Java 平台的标准语言。读者对这篇文章的反应非常热烈,所以我们决定开办这个专栏,提供使用这项热门新技术的实用指导。本文是第一期,将介绍使用 Groovy 和 JUnit 对 Java 代
我编写了一个简单的GCD函数来实现欧几里德算法,用于计算最大公约数GCD(m,n),即最大整数k除以m和n。 我编写的函数成功编译: 然而,我在GCD上编写单元测试时遇到了一个错误: 错误出现在“assertEquals”行中。我不确定我是否通过写入m/n%m来错误计算此方法。 有什么建议吗?提前谢谢。
我需要改进这个sql的执行时间,这是我此刻正在使用的代码。对于小表,它表现良好,在第一个表的参与者,我有一个平均5000个条目。第二个,有6万多个。代码在第一个表中执行搜索,按ID进行筛选,并将与第二个表相同的ID分组,生成单个字符串。 第一个表的结构如下 第二个表是 有人能给我一个想法,如何提高这个sql的搜索时间,因为今天生成完整的查询需要10多分钟。欢迎任何建议。