我有一个用Java(客户端)和C ++(服务器)编写的客户端/服务器应用程序。
我想知道是否有一种方法可以使用Gtest(或任何其他测试框架,不一定是在C ++中,只要它不是Java框架)作为在Java端执行测试的基础框架。
所以基本上,我想要实现的是以下伪代码:
// inside MyClass.java
public class MyClass{
public int myMethod(){
return 42;
}
}
//-------------------\\
// inside MyTest.cpp \\
TEST_F(MyJavaClassTest, meaning_of_life)
{
ASSERT_EQUALS(MyClass.myMethod(), 42);
}
//--------\\
// Output \\
[ RUN ] MyJavaClassTest.meaning_of_life
[ OK ] MyJavaClassTest.meaning_of_life (0 ms)
答案 0 :(得分:4)
即使您找到了这样的解决方案,我也会强烈反对他们。原因是您将获得Java和C ++代码之间的另一个互操作层。
首先,您需要以某种方式将Java代码与C ++客户端连接(在这种情况下,"客户端"是您的测试)。让我们假设您已经完成了这项工作。
现在,当你的一些测试失败时会发生什么?基本上,如果你用Java编写它们,你必须找出:
如果在Java代码之上添加另一个互操作层,则向其添加另一个问题,即:
根据我的个人经验(主要基于混合的C ++ / C#代码库),这种互操作性问题很少见,但是一旦进入它们就非常耗时。
所以,除非您计划在Java客户端上添加或维护 C ++接口以满足生产需求,否则不要这样做。如果您不喜欢JUnit,请尝试查看other Java testing frameworks。
反之亦然,如果拥有基于Java代码的C ++ API是产品中的必需功能(这在您的描述中似乎不太可能),那么对Java客户端的C ++测试将是&# 34;必须&#34 ;.但只有在这种情况下。