java - 我如何测试匿名类?

标签 java junit anonymous

很少有使用匿名类的遗留代码,它最终成为单个文件中的大部分代码。我想知道是否有测试匿名类的方法?

例如:

if (wp.speed != null && wp.speed >= 0) {

            FlightProtocol fp = new FlightProtocol() { //starts here

                @Override
                public Query getQuery() {
                    Query q = Query.empty();
                    if (wp.minSpeed < 0)
                        q = Query.and(q, Query.eq(Speed.Function, WayPoint));
                    else {
                        q = Query.and(q, Query.eq(Speed.Function, Field));
                        q = Query.and(q, Query.eq(Speed.Calc, wp.maxSpeed-wp.minSpeed));
                    }
                    q = Query.and(q, Query.eq(Speed.Id, wp.altitude/greatCircle));
                    return q;
                }
} else { ...}

所以像这样或类似的东西甚至可以进行单元测试?

最佳答案

单元测试的目的是验证 public API 的行为。匿名类是一个实现细节,编写单元测试来(直接)验证它是如何工作的会使你的测试变得脆弱。而是编写测试来验证调用匿名类的代码。

如果您的匿名类的行为非常复杂,您想单独测试它,那么它不应该是匿名的。将它提取到它自己的类中(可能作为包私有(private)静态内部类),然后您可以正常测试它。

关于java - 我如何测试匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205252/

相关文章:

java - 如何在 Java 中处理虚拟文件系统中单个文件中的资源

android - 使用 JUnit 对 SparseArray 进行单元测试(使用 JVM)

c# - 什么是局部变量(在 CountdownEvent 类的 MSDN 代码示例中)?

python - 将相同的操作应用于不同的数据帧

email - 匿名 SMTP 服务

java - 如何优化此代码以仅显示圆圈数组的轮廓?

java - n对括号的组合

java - Google 的 Json 解析 Gson 库 : What's the difference between JsonElement and JsonObject?

java - 如何在客户端接口(interface)中注入(inject)Mockito服务层

android - 当我的 Activity 依赖于通过 Intent 传递的额外内容时,如何编写 android JUnit 测试?