1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.compatibility.common.util; 18 19 import java.lang.annotation.ElementType; 20 import java.lang.annotation.Retention; 21 import java.lang.annotation.RetentionPolicy; 22 import java.lang.annotation.Target; 23 24 /** Marks the type of CTS test with purpose of asserting API functionalities and behaviors. */ 25 @Retention(RetentionPolicy.RUNTIME) 26 @Target({ElementType.METHOD, ElementType.TYPE}) 27 public @interface ApiTest { 28 // The list of APIs being tested. 29 // 30 // For example, if a CTS test is validating APIs: 31 // 1. android.example.ClassA#MethodA 32 // 2. android.example.ClassB#MethodB 33 // This test should be annotated by @ApiTest with the format: 34 // @ApiTest(apis={"android.example.ClassA#MethodA", "android.example.ClassB#MethodB"}) 35 // 36 // For other special cases: 37 // 1. a test is validating an API field via an API method (e.g. request.set(key, value): 38 // @ApiTest(apis={"android.example.ClassC#MethodC(FieldA)"}) 39 // 2. a test is validating an API field directly: 40 // @ApiTest(apis={"android.example.ClassD#FieldB"}) apis()41 String[] apis(); 42 } 43