- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 jUnit
中使用 assertEquals()
方法来测试某个值是否等于代码生成的实际值。
/*
calculating the actual_value
*/
int expected_value = 1000; // rows of the set of files, manually calculated
assertEquals(expected_value, actual_value);
我想知道如果我按照下面的方式进行操作,是否会出现标准和手续方面的问题。
/*
calculating the actual_value
*/
int expected_value = getRelevantLinesOfFiles(set of files); // rows of the set of files
assertEquals(expected_value, actual_value);
因为几乎不可能总是手动找到那种变量,所以我编写了一种方法来读取和计算这些文件中的相关行。
我担心的是我在 assertEquals
测试中使用了一个方法的输出。但是 getRelevantLinesOfFiles()
方法没有经过测试。如果我要测试它,那么我必须再次手动读取文件。所以这是一次又一次的同一件事。
这是一个好习惯吗?或者进行此类测试的最佳方法是什么?
最佳答案
如果这些文件也是计算 actual_value
的输入,那么您正在做的就是测试替代实现与真实实现。这是有效的,但需要预先了解事情,例如,与优化且更复杂的“生产”实现相比,通常使用非常简单且易于审查的测试实现来完成。如果不是这种情况,则说明您做错了什么。
如果文件包含 actual_value
不是从中计算的结果,那么它应该没问题,例如,如果您有输入集和匹配的预期输出集。
此外,请考虑您是否可以至少提炼出一些琐碎的硬编码输入和硬编码预期输出的案例,类似于您的第一个示例,不涉及文件。这可能需要允许您的界面使用不是 File
的抽象来模拟输入,或者能够在实际提供模拟测试数据的测试中注入(inject)替代文件读取机制.
编辑:只是为了提供一个很好的抽象的具体例子,而不是 File
实例(或文件名,或其他)考虑使用 okio并传入一组 Source实例。
实际实现:给定一个 File
实例列表,使用 Okio.source(file) 创建 Source
实例.
测试:通过 Buffer 的列表包含任何你想要的实例
Buffer b = new Buffer();
b.writeUtf8("whatever the hell I want in this file");
// can also write bytes or anything else
int actualValue = getRelevantLinesOfFiles(Arrays.asList(b));
关于java - 在 jUnit 的 assertEquals() 方法中计算 expected_value 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923068/
我正在 XGBClassifier 模型上运行 shap 并尝试理解输出。我的代码: params2 = {'n_estimators': 100, 'learning_
我用 SHAP 来解释我的 RF RF_best_parameters = RandomForestRegressor(random_state=24, n_estimators=100) RF_be
在 SHAP TreeExplainer 中包含训练数据会给出不同的 expected_value在 scikit-learn GBT 回归器中。 可重现的示例 (在 Google Colab 中运行
我在 jUnit 中使用 assertEquals() 方法来测试某个值是否等于代码生成的实际值。 /* calculating the actual_value */ int expected_
我是一名优秀的程序员,十分优秀!