2017-06-10 3 views
1

以下に示すように2つの準備済みステートメントをテストしていますが、assertEqualsを使用して同じものであることを表示したいが、結果とexpectedResultが等しくない。assertメソッドを使用して2つのプリペアドステートメントを比較するJunit

public PreparedStatement setSQL(String sql) throws SQLException { 

try { 

pst = connection.prepareStatement(sql); 

} catch (SQLException e) { 

e.printStackTrace(); 

} 

return pst; 

} 


public void testSetSQL() throws SQLException { 

     String sql = "SELECT * FROM student INNER JOIN member ON student.ssn=member.ssn WHERE ssn = ?"; 

     result = dbconn.setSQL(sql); 

     // expsql = ; 

     expectresult = connection.prepareStatement("SELECT * FROM student INNER JOIN member ON student.ssn=member.ssn WHERE ssn = ?"); 

     assertSame(expectresult, result); 

答えて

0

は何assertSame手段を理解するためにthis SO Questionとその答えをご参照ください。 2つのオブジェクト参照が等しいかどうかをチェックします.2つの異なるconnection.prepareStatement(...)呼び出しが2つの異なる参照/オブジェクトを与えるため、コードには当てはまりません。

私はPreparedStatement作品の平等をどうするかわからない、あなたがequals()方法のためにそのソースコードを確認することができます(PreparedStatementは、単にJDKのインターフェイスで、その実装は、ドライバプロバイダによって提供されます)、何が必要ですassertEqualsの参照してください。

コードが正常に動作しています。 prepareStatement(java.lang.String)から引用

戻り値: プリコンパイルされたSQL文

+0

を含む新しいデフォルトのPreparedStatementオブジェクトは、どこPreparedStatement'は価値の平等の意味を持つように文書化し 'ではありません。 –

関連する問題