citrus-framework を使用して、FTP サーバーにいくつかのファイルを書き込む統合をテストしようとしています。
一部のファイルが ftp にアップロードされるまで待機する必要があります (これwaitFor().condition()
を達成するためにステートメントを使用しています)。その後、送信されたメッセージを受信し、いくつかのアサーションを実行します。
import com.consol.citrus.annotations.CitrusTest;
import com.consol.citrus.condition.Condition;
import com.consol.citrus.context.TestContext;
import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;
import com.consol.citrus.ftp.server.FtpServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.testng.annotations.Test;
import java.io.File;
@ActiveProfiles(value = "ftpTest")
@Test
public class FtpTest extends TestNGCitrusTestDesigner {
@Autowired
FtpServer ftpServer;
@Autowired
TestContext context;
@CitrusTest(name = "ftpTest")
public void ftpTest() {
// here I start my integration that uses a cron to upload the file
// this code is irrelevant for the example
Condition waitUntilFileIsUploaded = new Condition() {
@Override
public String getName () {
return "Check files on FTP";
}
@Override
public boolean isSatisfied (TestContext testContext){
return new File("/tmp/foo_dir").listFiles().length != 0;
}
@Override
public String getSuccessMessage (TestContext testContext){
return "Files found in FTP!";
}
@Override
public String getErrorMessage (TestContext testContext){
return "No file was found in FTP";
}
};
waitFor().condition(waitUntilFileIsUploaded).seconds(120L).interval(500L);
ftpServer.createConsumer().receive(context);
}
}
このテストを実行しようとすると、実行されず、ファイルが FTP にアップロードされる前に実行waitFor()
されるように見えます。ftpServer.createConsumer().receive(context);
これは私が得ているエラーです:
ftpTest>TestNGCitrusTest.run:57->TestNGCitrusTest.run:111->TestNGCitrusTestDesigner.invokeTestMethod:73->TestNGCitrusTest.invokeTestMethod:133->ftpTest:49 » ActionTimeout
どうすればこれを修正できますか?また、Citrus で FTP Java DSL を使用するための完全な例は大歓迎です!