19de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson/*
29de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * Copyright 2011 Google Inc.
39de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
49de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * Licensed under the Apache License, Version 2.0 (the "License");
59de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * you may not use this file except in compliance with the License.
69de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * You may obtain a copy of the License at
79de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
89de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *     http://www.apache.org/licenses/LICENSE-2.0
99de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
109de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * Unless required by applicable law or agreed to in writing, software
119de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * distributed under the License is distributed on an "AS IS" BASIS,
129de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * See the License for the specific language governing permissions and
149de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * limitations under the License.
159de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson */
169de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson
179de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonpackage com.google.testing.littlemock;
189de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson
199de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonimport java.lang.annotation.ElementType;
209de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonimport java.lang.annotation.Retention;
219de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonimport java.lang.annotation.RetentionPolicy;
229de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonimport java.lang.annotation.Target;
239de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson
249de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson/**
259de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * Used to automatically inject a {@link ArgumentCaptor} object for use in your tests.
269de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
279de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * <p>Just annotate your capture field on your test as follows:
289de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * <pre>
299de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *   &#64;Captor private ArgumentCaptor&lt;String&gt; mCaptureString;
309de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * </pre>
319de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
329de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * <p>Then when the {@link LittleMock#initMocks(Object)} method is called (which should be
339de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * done in your setUp() call, or in a test base class) all your capture objects will be
349de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * automatically constructed.
359de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson *
369de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson * @author hugohudson@gmail.com (Hugo Hudson)
379de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson */
389de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson@Target({ ElementType.FIELD })
399de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson@Retention(RetentionPolicy.RUNTIME)
409de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudsonpublic @interface Captor {
419de203bcac3d285f4fa57c93085e467eaab9f8f9Hugo Hudson}
42