我有一个Grizzly HttpServer,我想在整个测试组执行期间运行.另外,我想从@Rule测试本身内部与全局HttpServer实例进行交互.
由于我使用Maven Surefire而不是使用JUnit测试套件,因此我不能在测试套件上使用@BeforeClass/ @AfterClass.
现在,我能想到的只是懒洋洋地初始化静态字段并停止服务器Runtime.addShutdownHook()- 不好!
我有一个uint8_t command_read(const FILE* const in)可以读取的C函数in.我想为函数编写一个单元测试.是否有可能FILE*为测试创建内存,因为我想避免与文件系统交互?如果没有,有哪些替代方案?
我有一个应用程序,再次链接SDL和cairo,我想在ubuntu上为win64交叉编译.我使用这篇优秀的博客文章来获取SDL交叉编译,并且我使用了另一篇博文来交叉编译zlib,libpng和libpixman.
但是,我现在在尝试编译我的最小测试程序时遇到链接器错误:
$ make cairotest.exe
x86_64-w64-mingw32-gcc -o cairotest.o -c cairotest.c -I/usr/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main -I/home/jshaw/x86_64-w64/include/cairo -I/home/jshaw/x86_64-w64/include/pixman-1 -I/home/jshaw/x86_64-w64/include/libpng16
x86_64-w64-mingw32-gcc -o cairotest.exe cairotest.o -L/usr/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -L/home/jshaw/x86_64-w64/lib -lcairo
collect2: error: ld returned 1 exit status
Makefile:13: recipe for target 'cairotest.exe' failed
Run Code Online (Sandbox Code Playgroud)
我应该提一下,如果我只使用没有任何开放代码的SDL2,这个测试程序可以正常工作,所以我怀疑我交叉编译的cairo库有问题.我该如何诊断问题呢?
是否有一个工具可以提取出现在HTTP响应中的文档并将它们转储到文件系统,理想情况下使用原始HTTP请求中的路径和文件名?
我有一个 URI,http://my-host.1domain:1234/path它抛出一个URISyntaxExceptionusing one URI 构造函数:
new URI("http", /*userInfo*/null, /*host*/"my-host.1domain", 1234, "/path", /*query*/null, /*fragment*/null);
Exception in thread "main" java.net.URISyntaxException: Illegal character in hostname at index 15: http://my-host.1domain:1234/path
at java.base/java.net.URI$Parser.fail(URI.java:2974)
at java.base/java.net.URI$Parser.parseHostname(URI.java:3517)
at java.base/java.net.URI$Parser.parseServer(URI.java:3358)
at java.base/java.net.URI$Parser.parseAuthority(URI.java:3277)
at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3219)
at java.base/java.net.URI$Parser.parse(URI.java:3175)
at java.base/java.net.URI.<init>(URI.java:708)
Run Code Online (Sandbox Code Playgroud)
但使用不同的 URI 构造函数可以正确解析:
// parses correctly
new URI("http", /*authority*/"my-host.1domain:1234", "/path", /*query*/null, /*fragment*/null);
Run Code Online (Sandbox Code Playgroud)
在 OpenJDK 17.0.1 中测试。我检查过域名可以以数字开头。那么我是否误用了 URI 构造函数,或者这是一个错误?
(背景:失败的构造函数是从UriComponentsBuilderSpring Web 中调用的,Spring Web 将其关闭为代码中的非错误)
目前,我正在使用 Spring 将步骤类注入到 JUnit 测试中:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration...
class MyTest extends JUnitStories {
@Autowired private MySteps mySteps;
public List<CandidateSteps> candidateSteps() {
return new InstanceStepsFactory(configuration(), mySteps).createCandidateSteps();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想使用多个线程运行 JBehave,因此我无法再注入单例 MySteps bean。
我已阅读http://jira.codehaus.org/browse/JBEHAVE-492,但仍然不知道如何解决我的问题。
我试图看看端口80和端口443是否被定义为任何地方的公共常量.这些是否存在于JDK中(或者可能存在于Apache HttpClient等公共库中)?
我有一个看起来像这样的函数:
PURE FUNCTION simulate(initial_state, time_specification)
TYPE(ocean), INTENT(IN) :: initial_state
TYPE(simulation_time), INTENT(IN) :: time_specification
TYPE(ocean) :: simulate
REAL :: t = 0.0
! etc
END FUNCTION simulate
Run Code Online (Sandbox Code Playgroud)
gfortran 4.8.1告诉我
REAL :: t = 0.0
1
Error: Initialization of variable at (1) is not allowed in a PURE procedure
Run Code Online (Sandbox Code Playgroud)
据我了解,我应该能够在纯函数中使用局部变量,只要它们没有SAVE属性.那么我做错了什么?
unixpreproc.cpp
#ifdef unix
#warning "unix is defined"
#endif
#ifdef __unix__
#warning "__unix__ is defined"
#endif
void main() {}
Run Code Online (Sandbox Code Playgroud)
使用Intel C ++编译器19.0.3:
icpc -o unixpreproc unixpreproc.cpp显示同时定义了unix和__unix__宏
但
icpc -std=c++11 -o unixpreproc unixpreproc.cpp显示仅__unix__已定义。这是故意的吗?它没有记录在英特尔编译器手册中。
我编写了一个小型 C 程序,用于readline("")从标准输入读取输入。我没有从终端与其进行交互,而是编写了一个测试工具来执行 C 程序并为其提供输入:
test harness --stdout--> | --stdin--> C program
^------stdin--- | <--stdout-----/
Run Code Online (Sandbox Code Playgroud)
该测试工具正在接收其输出的回声,即使是程序本身。为什么 readline() 会回显其输入,我可以禁用它吗?或者我不应该在非交互式环境中使用 readline() 吗?
我见过的唯一CriteriaQuery示例是SELECT查询.有没有办法用JPA 2或Hibernate API构造类型安全的DELETE查询?
OpenFOAM使用数字名称创建时间目录,例如3或8.941在案例的根目录中(如OpenFOAM用户手册中所述).由于所有这些目录都是以编程方式生成的(目录中的初始条件除外0),我如何说服git忽略目录?我不知道将时间目录重定位到子目录的方法,即使我可以,这可能会扰乱相关的处理工具,如ParaView.
我试图删除$ PATH中的条目,如果该条目包含给定的字符串foo.例如PATH=/home/me/bin:/home/foo/bin:/usr/foo/bin:/bin会成为PATH=/home/me/bin:/bin.我现在有
echo $PATH | perl -pe 's/:(.*?)foo(.*?):/:/g'
Run Code Online (Sandbox Code Playgroud)
但这似乎删除了太多的条目,即使我正在尝试使用非贪婪的匹配.我究竟做错了什么?