小编PCR*_*PCR的帖子

在junit中模拟System.getenv调用时遇到麻烦

我正在尝试为Spring Boot应用程序使用junit和mockito(对此非常新)编写单元测试。基本上,在我的代码中,我为manifest.yml文件(用于部署)中的特定URL指定了一个环境变量,可以String URL = System.getenv("VARIABLE")在我的代码中访问该变量。但是,由于URL变量显然未定义,因此我在单元测试中遇到了很多麻烦。我在这里尝试了该解决方案,但是意识到这仅用于模拟环境变量(如果您从实际测试本身调用它),而不是如果您依赖于可从代码访问的环境变量。

有什么方法可以设置它,以便在运行测试时可以设置可以在代码中访问的环境变量?

java junit unit-testing

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

size_t数据类型是否可以安全地用于str.find()?

我一直在查看find()字符串函数的代码,并将结果存储在数据类型为size_t的变量中.但是我的理解是size_t是unsigned int,如果find()找不到想要的字符串,则返回-1.例如,如果我有

string s = "asdf";
size_t i = s.find("g")
cout << i;
Run Code Online (Sandbox Code Playgroud)

它给了我4294967295.但是如果我用int数据类型替换size_t,它给我-1.奇怪的是,当我进行比较时

string s = "asdf";
size_t i = s.find("g")
if (i == -1) { do_something; }
Run Code Online (Sandbox Code Playgroud)

无论我是size_t还是int,它都可以工作.那么我用哪个?int还是size_t?

c++

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

陷阱和仿真与二进制翻译之间有什么区别?

我了解陷阱和模拟是什么,但是我在努力理解什么是二进制转换以及它与陷阱和模拟有何不同。我对这个主题还很陌生,并且正在尝试从2006年的一篇论文中了解此介绍:

“直到最近,x86架构仍不允许经典的陷阱和仿真虚拟化。用于x86的虚拟机监视器(例如VMware®Workstation和Virtual PC)已使用来宾内核代码的二进制翻译。但是,英特尔和AMD现在已经引入了架构扩展以支持经典虚拟化。”

我还不了解上下文陷阱中的“ 经典虚拟化 ”和模拟与二进制翻译的关系。任何帮助理解这些术语将不胜感激。

virtualization virtual-machine

3
推荐指数
1
解决办法
2225
查看次数

用空字符串初始化字符串

我想知道是否可以用空字符串初始化字符串,如下所示:

#include <stdio.h>
#include <string.h>

char* some_function() {
    char* w = malloc(100*sizeof(char));
    w = "";
    if (1 == 2) {
        w = "Not empty anymore";
    }
    return w;
}

int main(void) {

    char* word = some_function();
    int r = strcmp("", word);

    printf("%s\n", word);
    printf("%d\n", r);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它编译得很好,并给出了我想要的结果,但是我对 C 仍然很陌生,想知道这是否会导致任何问题。我还可以使用 strcmp 将单词与“”进行比较吗?

c string strcmp

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

标签 统计

c ×1

c++ ×1

java ×1

junit ×1

strcmp ×1

string ×1

unit-testing ×1

virtual-machine ×1

virtualization ×1