也许我误解了可以在何处使用条件注释,但是我试图仅在传入系统属性的情况下运行afterEach钩子或afterAll钩子。
例如:
select
date '1899-12-31'
+ floor("jDate" / 1000) * interval '1' year
+ (
mod("jDate", 1000)
- case when "tEnd" < 120000 and "dTeam" = 3 then 1 else 0 end
) * interval '1' day
+ floor("tStart" / 10000) * interval '1' hour
+ floor(mod("tStart", 10000) / 100) * interval '1' minute
+ mod("tStart", 100) * interval '1' second
as "Start",
date '1899-12-31'
+ floor("jDate" / 1000) * interval '1' year
+ (
mod("jDate", 1000)
- case when "tEnd" < 120000 and "dTeam" = 3 then 1 else 0 end
) * interval '1' day
+ floor("tEnd" / 10000) * interval '1' hour
+ floor(mod("tEnd", 10000) / 100) * interval '1' minute
+ mod("tEnd", 100) * interval '1' second
as "End",
"IDPers" as "ID",
"dTeam" as "Team"
from "UnitsDay"
where "jDate" > 118000
and "Dep" = 1;
Start End ID Team
------------------- ------------------- ---------- ----------
2018-09-30 00:00:00 2018-09-30 06:30:00 1 1
2018-09-30 16:00:00 2018-10-01 00:00:00 2 2
2018-09-29 00:00:00 2018-09-29 06:30:00 3 3
2018-09-30 12:00:00 2018-09-30 12:34:56 4 3
2018-09-30 22:00:00 2018-10-01 00:00:00 5 3
2018-09-30 00:00:00 2018-09-30 08:00:00 5 3
以及我的afterEach钩子:
with cte ("Start", "End", "ID", "Team") as (
select
date '1899-12-31'
+ floor("jDate" / 1000) * interval '1' year
+ mod("jDate", 1000) * interval '1' day
+ floor("tStart" / 10000) * interval '1' hour
+ floor(mod("tStart", 10000) / 100) * interval '1' minute
+ mod("tStart", 100) * interval '1' second,
date '1899-12-31'
+ floor("jDate" / 1000) * interval '1' year
+ mod("jDate", 1000) * interval '1' day
+ floor("tEnd" / 10000) * interval '1' hour
+ floor(mod("tEnd", 10000) / 100) * interval '1' minute
+ mod("tEnd", 100) * interval '1' second,
"IDPers",
"dTeam"
from "UnitsDay"
where "jDate" > 118000
and "Dep" = 1
)
select cte.*, "End" - "Start" as "Duration"
from cte;
Start End ID Team Duration
------------------- ------------------- ---------- ---------- ----------
2018-09-30 00:00:00 2018-09-30 06:30:00 1 1 .270833333
2018-09-30 16:00:00 2018-10-01 00:00:00 2 2 .333333333
2018-09-30 00:00:00 2018-09-30 06:30:00 3 3 .270833333
2018-09-30 12:00:00 2018-09-30 12:34:56 4 3 .0242592593
2018-09-30 22:00:00 2018-10-01 00:00:00 5 3 .0833333333
2018-10-01 00:00:00 2018-10-01 08:00:00 5 3 .333333333
在上面的示例中,我希望不打印mvn test -DrunTearDownScript=false
,但它是“ false”。
我想我可以在钩子中编写自己的条件,但是理想情况下使用批注看起来更简洁。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
也许我误解了可以在其中使用条件注释的地方...
是的。它们只能用于“容器或(a)测试(方法)”上。
从https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution复制
JUnit Jupiter中的ExecutionCondition扩展API允许开发人员根据特定条件以编程方式启用或禁用容器或测试。
[...]
以下各节中列出的每个条件注释只能在给定的测试接口,测试类或测试方法上声明一次。
[...]
2.7.3 系统属性条件
可以通过@EnabledIfSystemProperty和@DisabledIfSystemProperty批注基于命名的JVM系统属性的值来启用或禁用容器或测试。通过matchs属性提供的值将被解释为正则表达式。