小编Rob*_*ahl的帖子

有没有一种简单的方法可以有条件地启用或忽略 Rust 中的整个测试套件?

I\xe2\x80\x99m 正在开发一个 Rust 库,该库提供对某些硬件设备的访问。有两种设备类型:1 和 2,类型 2 的功能是类型 1 功能的超集。

\n\n

我想针对不同的情况提供不同的测试套件:

\n\n
    \n
  • 在没有连接设备的情况下进行测试(基本健全性检查,例如 CI 服务器)
  • \n
  • 测试共享功能(需要类型 1 或 2 的设备)
  • \n
  • 测试类型 2 专有功能(需要类型 2 的设备)
  • \n
\n\n

I\xe2\x80\x99m 使用功能来表示此行为:默认功能test-no-device和可选功能test-type-one以及test-type-two. 然后我使用该cfg_attr属性来忽略基于所选功能的测试:

\n\n
#[test]\n#[cfg_attr(not(feature = "test-type-two"), ignore)]\nfn test_exclusive() {\n    // ...\n}\n\n#[test]\n#[cfg_attr(not(any(feature = "test-type-two", feature = "test-type-one")), ignore)]\nfn test_shared() {\n    // ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是相当麻烦的,因为我必须为每个测试复制这个条件,并且这些条件很难阅读和维护。

\n\n

有没有更简单的方法来管理测试套件?

\n\n

我尝试ignore在声明模块时设置该属性,但显然只能为每个test函数设置该属性。我认为我可以通过cfg在模块上使用来禁用排除测试的编译,但由于测试应该始终编译,我想避免这种情况。

\n

unit-testing rust

5
推荐指数
1
解决办法
2049
查看次数

两个具有不同参数的同名函数,一个没有范围分辨率运算符,另一个没有

我正在将程序从C++转换为Java.在我的C++代码中,我在SomeClass类中有两个函数,它们具有相同的名称,但具有不同的参数,并且一个函数使用范围解析运算符而另一个函数没有.

SomeOtherType* SomeClass::foo()
{
//some code
}
Run Code Online (Sandbox Code Playgroud)

SomeOtherType* foo(list<Token*>& param)
{
//some more code
}
Run Code Online (Sandbox Code Playgroud)

由于Java不使用范围解析运算符,如何在Java中等效地实现这些函数?

提前致谢.

java

4
推荐指数
1
解决办法
66
查看次数

在DLang数组中跳过第一个argv

我开始学习D.我写了几个基本程序(你好世界......添加2个麻木)我正在进行第三个.它应该采用一组数字并将它们加在一起.我有以下代码:

import std.stdio;
import std.algorithm;
import std.string;
import std.conv;

int main(string[] argv)
{
    int sum;
    foreach (int i, string s; argv) 
    {
        writefln("argv[%d] = '%s'", i, s);
        if (isNumeric(s)){
            sum += to!int(s);
        } else {
            writeln("Please only input numbers. ex:\n\t", argv[0], " [number] [number] [number]");
            return 1;
        }
    }
    writeln(sum);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题argv[0]是脚本名称.

  1. 为什么?

  2. 我怎么告诉它跳过第一个?我可以告诉它跳过所有非数字输入,但是如果索引大于0,我可能想要错误输出?

d

0
推荐指数
1
解决办法
201
查看次数

在结构数组中访问std :: unordered_map时出现浮点错误

我的代码生成一个C数组结构,其中struct的一个成员是STL std :: unordered_map:

typedef struct test_s {
   int count_a;
   std::unordered_map<std::string, int> my_map;
} test_map;

typedef struct cm_example {
   int width;
   test_map *counts;
   unsigned int hasha, hashb;
} cm_sketch;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问地图以执行查找,插入等时,我总是遇到浮点异常:

Compile:  g++ -std=c++11 -g test_struct.cpp -o h_str
Run:  ./h_str_str agggcctttgagag 100

Output: 
Kmer name: agggcctttgagag
hash_a: 172110908 , hash_b: 1954003865, bucket: 92 
Floating point exception
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

cm_sketch *cm_init (int width, int seed)
{
    cm_sketch *cm;
    int i=0;

    cm = (cm_sketch *) malloc(sizeof(cm_sketch));
    cm->width = width;

    cm->counts = (test_map *) malloc …
Run Code Online (Sandbox Code Playgroud)

c++ struct stl unordered-map

0
推荐指数
1
解决办法
1026
查看次数

标签 统计

c++ ×1

d ×1

java ×1

rust ×1

stl ×1

struct ×1

unit-testing ×1

unordered-map ×1