내가 함께 자바 클래스에서 JUnit 테스트를 실행하려고 오전 :패스 명령 행 인수는 프로그래밍 방식으로 실행되고
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.run(classToRun);
문제는 내 JUnit 테스트입니다 현재에 하드 코딩 된 데이터베이스 연결이 필요합니다 JUnit 테스트 자체.
내가 찾고있는 것은 JUnit 테스트를 프로그래밍 방식으로 (위) 실행하지만 테스트를 실행하는 Java 클래스에서 데이터베이스 연결을 전달하고 JUnit 클래스 내에서 하드 코딩하지 않는 방법입니다.
기본적으로 그런 다음 classToRun 내
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.addParameters(java.sql.Connection);
core.run(classToRun);
같은 :
@Test
Public void Test1(Connection dbConnection){
Statement st = dbConnection.createStatement();
ResultSet rs = st.executeQuery("select total from dual");
rs.next();
String myTotal = rs.getString("TOTAL");
//btw my tests are selenium testcases:)
selenium.isTextPresent(myTotal);
}
내가 @parameters에 대해 알고 있지만,이 같은 테스트를 실행하기위한 더로 여기에 적용하지 않는 것 여러 번 다른 값을 갖는 경우. 모든 테스트 케이스에서 구성 파일을 통해 내 Java 클라이언트로 전달하는 데이터베이스 연결을 공유 한 다음 해당 테스트 케이스를 실행하고 (구성 파일을 통해 전달되는 경우)
이것이 가능합니까?
P. 나는 이것이 이상한 일을하는 것처럼 보인다고 이해합니다.
System.set/getProperty() 메서드는 실행중인 테스트 클래스에 변수를 전달하기에 충분했습니다. 고맙습니다! –
이 방법으로 인수를 전달하면 -Dconnectionstring = foobar입니다. 런타임에 어떻게 추출 할 수 있습니까? –
@TomKoptel 당신은'String value = System.getProperty ("connectionstring");'과 같은 것을 사용하여 값을 얻는다. – tonio