繁体   English   中英

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

[英]Integration Testing Java application with C++ unit testing framework

我有一个用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)

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

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

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

  • 这是由于Java客户端代码中的问题引起的吗?
  • 您的C ++服务器代码是否有问题?
  • 是否由于客户端和服务器之间的Java / C ++互操作而引起了问题?

如果在Java代码之上添加另一个互操作层,则向其中添加另一个问题,即:

  • 由于单元测试和您的客户端之间的C ++ / Java互操作而引起的问题吗?

根据我的个人经验(大多数情况是基于C ++ / C#混合代码库),这种互操作性问题很少见,但是一旦接触到它们就会非常耗时。

因此, 除非您打算出于生产需求而在Java客户端上添加或维护 C ++接口,否则请不要这样做。 如果您不太喜欢JUnit,请尝试检查其他Java测试框架

而且,反之亦然,如果其在Java代码中C ++ API是在您的产品所需的功能 (这似乎从你的描述不太可能),那么C ++对Java客户端的测试将是一个“必须”。 但只有在这种情况下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM