【问题标题】:how to assert date time stamp is within 2 minutes?如何断言日期时间戳在 2 分钟内?
【发布时间】:2020-03-16 09:52:09
【问题描述】:

我想要断言以确保检索到的数据在

  1. 打印数据1 2020-03-16 09:08:49

  2. 打印数据2 2020-03-16 09:09:15

  3. assertData1和data2之间的时间间隔不超过2分钟就过去了。

我有示例代码,这是最好的方法吗? 有什么建议,欢迎评论。

 //data1 
 Date data1 = new Date();
 //data2 
 Date data2 = new Date();
 //assert
 assertThat(data1, DateMatchers.within(2, ChronoUnit.MINUTES, data2 ));

最新脚本

import static org.assertj.core.api.Assertions.*

import java.sql.*
import java.text.SimpleDateFormat

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

import internal.GlobalVariable as GlobalVariable
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.Date
import com.kms.katalon.core.configuration.RunConfiguration

GlobalVariable.TestIssueKey = null


WebUI.delay(1)


//SQL statement
dbQuery2 = /SELECT * FROM drugs.sync/


//Connect to PostgresSQL, global variable is stored at profile
List results = CustomKeywords.'test.database.getPostgresSQLResults'(GlobalVariable.dbConnString2 , GlobalVariable.dbUsername2 , GlobalVariable.dbPassword2 ,GlobalVariable.dbDriver2 ,dbQuery2 )

//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss", Locale.ENGLISH)
String date = sdf.format(new Date())

//print the "lastupdatedwm6" column for PULL
String lastupdatedwm6 = results.get(0).get('lastupdatedwm6')

//store the lastupdatedwm6 to file
def lastupdatedwm6aft = new File(RunConfiguration.getProjectDir() + "/Data Files/lastupdatedwm6aft.txt")
lastupdatedwm6aft.newWriter().withWriter { it << lastupdatedwm6 }
println lastupdatedwm6aft.text


WebUI.delay(2)
//Read data before drugsync Pull
def lastupdatedwm6bef = new File(RunConfiguration.getProjectDir() + "/Data Files/lastupdatedwm6bef.txt")


	Date data1 = sdf.parse(lastupdatedwm6bef.text);
	Date data2 = sdf.parse(lastupdatedwm6aft.text);

	long diffInMillies = Math.abs(data2.getTime() - data1.getTime());
	long minute_millis_2 = 2 * 60 * 1000;
	long diffTime = minute_millis_2 - diffInMillies;
	assertTrue(diffTime > 0);
	
	

【问题讨论】:

  • 最好是什么意思?

标签: java assert assertion


【解决方案1】:
@Test
public void test() throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss", Locale.ENGLISH);

    Date data1 = sdf.parse("2020-03-16 09:08:49");
    Date data2 = sdf.parse("2020-03-16 09:09:49");

    long diffInMillies = Math.abs(data2.getTime() - data1.getTime());
    long minute_millis_2 = 2 * 60 * 1000;
    long diffTime = minute_millis_2 - diffInMillies;
    assertTrue(diffTime > 0);
}

【讨论】:

  • 我使用了你的方法但是遇到错误 groovy.lang.MissingMethodException: No signature of method: Script1584408493586.assertTrue() is applicable for argument types: (java.lang.Boolean) values: [true]
  • @user12158726 可能您的 Junits 代码中有不同的库。使用你最后可用的功能,它检查 diffTime 应该大于 0
  • @user12158726 我正在使用这个---> import static org.junit.Assert.assertTrue;
【解决方案2】:

另一种方法是使用超时。

// This will fail if the test takes more than 1000 milliseconds
@Test(timeout=1000)
public void test() {
  objectToTest.methodThatTakesALongTime();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多