Bir sınıf egzersizi için bir test vakasının uygulanmasının en iyi yolunu bulmaya çalışıyorum. Sınıf egzersizim bilinen bir hatayı sağlıyor ve ben de bunun başarısız olması için bir test durumu yazmalı ve böylelikle hatayı bulmalıyım. Dijkstra Algoritmasını kullanmıştır.JUnit Test Örneği Dijkstra Algoritmasında Özel Yöntemle
Bu sağlanan kodun doğru versiyonudur:
aşağıdakiprivate int getNodeWithMinimumDistanceFromUnsettled()
{
int min;
int node = 0;
Iterator<Integer> iterator = unsettled.iterator();
node = iterator.next();
min = distances[node];
for (int i = 1; i <= number_of_nodes; i++)
{
if (unsettled.contains(i))
{
if (distances[i] <= min)
{
min = distances[i];
node = i;
}
}
}
return node;
}
ayrı sürümde bilinen böcek gibi: Burada
if (unsettled.contains(i))
{
if (distances[i] > min)
{
min = distances[i];
node = i;
}
}
ve ben kullanıyorum JUnit Testi durumdur onu bulmak için. Java Yansıma ile bu yönteme erişmeye çalışıyorum ve sonra döndürülen düğümün düğüme eşit olup olmadığını denemeye çalışıyorum aslında daha büyük mesafe.
int[][] adjacency = { { 0, 0, 0, 0, 0 },
{ 0, 0, 9, 10, 0 },
{ 0, 9, 0, 0, 0 },
{ 0, 5, 4, 0, 2 },
{ 0, 5, 4, 3, 0 },
};
Dijkstra d1 = new Dijkstra(4);
d1.dijkstra_algorithm(adjacency, 1);
/*
try {
nodeMethod = Dijkstra.class.getDeclaredMethod("getNodeWithMinimumDistanceFromUnsettled");
} catch (NoSuchMethodException e) {
System.out.println(e.getMessage());
}
nodeMethod.setAccessible(true);
try {
node = (int) nodeMethod.invoke(d1);
System.out.println("min node is: " + node);
} catch (IllegalAccessException | InvocationTargetException e) {
System.out.println(e.getMessage());
}
assertEquals(node, 0);
*/
Testi çalıştırdığınızda, hiçbir çıkış olsun bir şey yapmak görünmüyor:
İşte benim test durumdur. Bunu düşündüğümü düşünüyorum. Bu hatayı java yansıması kullanmadan bulmanın daha kolay bir yolu var mı?
Şerefe (bitişiklik, 1). Örneğin. assertEquals (beklenenValue, d1.dijkstra_algorithm (bitişik, 1)) –
Sorun nedir? Testin işe yaramadı mı? Ya da testiniz işe yarıyor, ama çok karmaşık ve daha basit bir şekilde çözülmeli mi? – CoronA