Ich habe einen Testcode (Junit & mockit) für den Code geschrieben, der die AWS-API (Java) aufruft.

Auslösen

Ich hatte ein Programm, um den Stapelstatus von CloudFormation unter AWS zu überprüfen. Es ist erforderlich, alle Status zu testen, da die Verarbeitung für jeden zurückgegebenen Status unterschiedlich ist.

Aufgabe

Sie können den Status des AWS CloudFormation-Stacks hier nicht steuern.

Wie testest du es?

Schreiben Sie den Testcode in Junit Ich habe beschlossen, den von der API zurückgegebenen Status anzugeben (zu verspotten).

Das Teil, das Sie testen möchten

Unten finden Sie den zu testenden Codeteil

describeStacks.java


/*Erstellen eines Clients für die Ausführung der CloudFormation-API*/
AmazonCloudFormationAsync CFclient = AmazonCloudFormationAsyncClientBuilder.standard()
		.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("hope", "huga")))
		.build();

/*DescribeStacks Geben Sie den Namen des Zielstapels an*/
DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
describeStacksRequest.withStackName("hogestack");

/*API, um hier den Stapelstatus abzurufen(describeStacks)(Wo du dich lustig machen willst)*/
DescribeStacksResult describeStacksResult = CFclient.describeStacks(describeStacksRequest);

Verspottung

describeStacksTest.java


@RunWith(MockitoJUnitRunner.class)
public class describeStacksTest {

    /*Erklären Sie die Klasse zum Verspotten*/
    @Mock AmazonCloudFormationAsync AmazonCloudFormationMock;
    /*Geben Sie die Klasse an, in die die zu verspottende Klasse eingefügt werden soll*/
    @InjectMocks describeStacksClass describeStacks = new describeStacksClass();

	@Before
	public void init() {
        /*Scheininitialisierung*/
        MockitoAnnotations.initMocks(this);
	}
	@Test
public void Steuern des Stapelstatus() {
        /*Erstellen Sie eine Klasse von Rückgabewerten, wenn descriptionStacks ausgeführt wird*/
		DescribeStacksResult describeStacksResult = new DescribeStacksResult();
		Stack stacks = new Stack();
		stacks.setStackStatus(StackStatus.CREATE_COMPLETE); //Stellen Sie StackStatus ein(Diesmal ERSTELLEN_Geben Sie den Status von COMPLETE an)
		describeStacksResult.withStacks(stacks);

        /*Erstellen Sie eine Klasse mit denselben Argumenten, die das Testziel ausführt*/
		DescribeStacksRequest describeStacksRequest = new DescribeStacksRequest();
		describeStacksRequest.withStackName("hogestack");

        /*Geben Sie die Argumente und den Rückgabewert an, wenn Sie verifyStacks der verspotteten Klasse ausführen*/
		when(AmazonCloudFormationMock.describeStacks(DescribeStacksRequest)).thenReturn(describeStacksResult);

Impressionen

Da die AmazonCloudFormationAsync-Klasse öffentlich war, konnte sie leicht verspottet werden. Da es sich um eine Klasse handelt, die als API bereitgestellt wird, war es leicht zu verspotten, da sie öffentlich war. Es ist wahr, dass die Resule-Klasse auch leicht zu setzen ist (Erwarten Sie, dass AWS verspottet und hartnäckig ist?) Ich denke, andere APIs können auf die gleiche Weise getestet werden.

Recommended Posts

Ich habe einen Testcode (Junit & mockit) für den Code geschrieben, der die AWS-API (Java) aufruft.
Ich habe Randoop untersucht, einen JUnit-Testklassengenerator für Java.
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
[RSpec] Ich habe einen Test zum Hochladen eines Profilbilds geschrieben.
Ich habe einen Wrapper erstellt, der KNP von Java aus aufruft
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
Ich habe den Java-Test Level 2 bestanden und werde eine Notiz hinterlassen
Ich habe eine Sterling-Sorte geschrieben, die sich wie in Java anfühlt
Eine Geschichte, die ich als Nicht-Ingenieur endlich verstanden habe
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?
Eine Geschichte, die ich mit der Stream-API von Java8 einem Prozess schreiben wollte, der einer while-Anweisung entspricht
[AWS SDK für Java] Legen Sie die Wiederholungsrichtlinie für den S3-Client fest
Als ich eine Methode für Premium Friday erstellen wollte, war sie bereits in der Java 8-Standard-API enthalten
Ich habe ein Programm erstellt, das aus dem mit Java überladenen Prozess nach der Zielklasse sucht
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
Code zum Löschen aller Dateien mit dem angegebenen Präfix in AWS S3 (Java)
Ich suchte nach einem leichten Framework, das das plötzliche "schnell machen" beantworten würde.
Ich habe ein Diff-Tool für Java-Dateien erstellt
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
[Java] So testen Sie, ob es in JUnit null ist
ChatWork4j für die Verwendung der ChatWork-API in Java
[API] Ich habe versucht, die Postleitzahlensuch-API zu verwenden
Ich habe Code Pipeline mit AWS CDK erstellt.
Ich habe ein Primfaktorisierungsprogramm in Java geschrieben
Generieren Sie Java-Clientcode für die SOAP-API von SalesForce
Richten Sie signierte Cookies (für CloudFront) mit benutzerdefinierten Richtlinien mithilfe des AWS SDK für Java ein
Träumen Sie davon, einfach eine Web-API für die Datenbank eines vorhandenen Java-Systems zu erstellen
Ich habe ein Check-Tool für das Release-Modul erstellt
Ich habe den lesbaren Code gelesen, machen Sie sich also eine Notiz
Ein Hinweis zum Initialisieren von Feldern im Java-Lernprogramm
[Swift] API für Apps, die die Auswahl bestanden haben
Ich habe ein Sequenzdiagramm des j.u.c.Flow-Beispiels geschrieben
Anmeldeinformationen, auf die das AWS SDK für Java standardmäßig verweist
Ich möchte eine Schleife schreiben, die auf einen Index mit der Stream-API von Java 8 verweist
Implementierung einer starken API für "Ich möchte ~~ auf dem Bildschirm anzeigen" mit einfachem CQRS
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Ich habe eine Antwortfunktion für die Erweiterung Rails Tutorial (Teil 4) erstellt: Eine Funktion, die den Benutzer einzigartig macht
Ich habe versucht, ein Programm in Java zu erstellen, das das Problem des Handlungsreisenden mit einem genetischen Algorithmus löst