使用C 单元测试框架集成测试Java应用程序

Integration Testing Java application with C++ unit testing framework

本文关键字:Java 应用程序 集成测试 框架 单元测试 使用      更新时间:2023-10-16

我有一个用java(client(和c (服务器(写的客户端/服务器应用程序。

我想知道是否有一种使用GTEST的方法(或任何其他测试框架,不一定在C 中,只要它不是Java框架(作为在Java端执行测试的基本框架。

基本上,我想实现的目标是以下 pseudo-code

// 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)

即使您找到了这样的解决方案,我也会强烈建议对它们。原因是您将在Java和C 代码之间获得另一个互操作性层。

首先,您需要以某种方式将Java代码接口到C 客户端(在这种情况下,"客户端"是您的测试(。假设您已经完成了。

现在,当您的某些测试失败时会发生什么?基本上,如果您用Java写了它们,则必须找出:

  • 是由于您的Java客户端代码中存在问题吗?
  • 您的C 服务器代码中是否有问题?
  • 由于您的客户端和服务器之间的Java/C 互动互动是一个问题吗?

如果在Java代码的顶部添加另一个Interop图层,则将另一个问题添加到这些问题:

  • 由于单位测试和您的客户端之间的C /Java互动而引起的问题?

根据我的个人经验(主要是基于C /C#代码库(,这种互操作性问题很少,但是一旦进入它们,很耗时。

so,,除非您打算在Java客户端上添加或维护以满足生产需求,否则请不要这样。如果您不喜欢Junit那么多,请尝试检查其他Java测试框架。

,反之亦然,如果Java代码上的C API是您的产品中所需的功能(从您的描述中看来,这似乎不太可能(,那么对Java客户端的C 测试将是"必须"。但是只有在这种情况下。